Prompt file imported from minicoohei/ai-agent-camp (
.cursor/commands/lesson/start-7-7.md). Copyright stays with the author.
ð Lesson 7-7: SKILL.mdé§åã®ã¹ãã«éçº
ð ãã®ã»ãã·ã§ã³ã§ããããš
Lesson 7-7: SKILL.mdé§åã®ã¹ãã«éçº ãžããããïŒ
| é ç® | å 容 |
|---|---|
| ãŽãŒã« | SKILL.mdãæ žãšããã¹ãã«ã1ã€ãŒãããäœæãã |
| æèŠæé | çŽ40å |
| 䜿ãã¹ãã« | SKILL.mdãPython |
| åææ¡ä»¶ | Lesson 7-5 å®äºïŒæ§é çè§£ïŒãLesson 7-1 å®äºæšå¥šïŒã¹ãã«èšèšåºç€ïŒ |
ãã®ã»ãã·ã§ã³ã®æµã:
- ã¹ãã«ã®ã¢ã€ãã¢ã決ããïŒAskUserQuestion䜿çšïŒ
- SKILL.mdã®ãã©ããäœæïŒç®çãå ¥åºåãäœ¿ãæ¹ïŒ
- scripts/ ãã£ã¬ã¯ããªã«Pythonã¹ã¯ãªããå®è£
- SKILL.mdãæçµçã«ä»äžãïŒAnthropicãã¹ããã©ã¯ãã£ã¹æºæ ïŒ
- åäœãã¹ã
ã»ãã·ã§ã³çµäºæã«ã¯ãèªåã ãã®ãªãªãžãã«ã¹ãã«ã宿ããskills/ ã®æ£æ¬ãšããŠç®¡çã§ããç¶æ
ã«ãªã£ãŠããŸãã
ð¡ ãã³ã: AIã®å¿çãéäžã§æ¢ãŸã£ãå Žåã¯ãç¶ãã衚瀺ããŠããæ¢ãŸã£ãŠããããšå ¥åãããšåéããŸããããŒã«ã«ãã£ãŠå¿çãéäžã§æ¢ãŸãããšããããŸãããæ éã§ã¯ãããŸããã
ð¯ æºåãã§ãã¯
ãŸãã¯æºåãæŽã£ãŠããã確èªããŸãããã
AskQuestionã®èšå®:
{
"title": "ð¯ ã»ãã·ã§ã³éå§åã®ç¢ºèª",
"questions": [{
"id": "readiness",
"prompt": "æºåã¯ã§ããŠããŸããïŒ",
"options": [
{"id": "ready", "label": "æºåOKïŒå§ããŸããã"},
{"id": "check_prereq", "label": "åææ¡ä»¶ã確èªããã"},
{"id": "view_html", "label": "å
ã«ææããŒãžãèŠãã"},
{"id": "different_lesson", "label": "å¥ã®ã¬ãã¹ã³ã«ç§»åããã"}
]
}]
}
(ready â Step 1ãž) (check_prereq â åææ¡ä»¶ã®ç¢ºèªãå®è¡) (view_html â ææããŒãžURL https://ai-agent.camp/ja/course/module-7 ãæ¡å ) (different_lesson â ã¢ãžã¥ãŒã«äžèЧã衚瀺)
ð Step 1: ã¹ãã«ã®ã¢ã€ãã¢ã決ãã
ãŸãã¯ã©ããªã¹ãã«ãäœããæ±ºããŸãããã以äžã®ã«ããŽãªããéžã¶ããèªåã®ã¢ã€ãã¢ãå ¥åããŠãã ããã
AskQuestionã®èšå®äŸ:
{
"title": "ð Step 1: ã¹ãã«ã®ã¢ã€ãã¢ã決ãã",
"questions": [{
"id": "skill_idea",
"prompt": "ã©ããªã¹ãã«ãäœãããã§ããïŒ",
"options": [
{"id": "doc_creation", "label": "Document CreationïŒææžçæç³»ïŒ"},
{"id": "workflow_auto", "label": "Workflow AutomationïŒäœæ¥èªååç³»ïŒ"},
{"id": "data_processing", "label": "Data ProcessingïŒããŒã¿åŠçç³»ïŒ"},
{"id": "custom", "label": "èªåã®ã¢ã€ãã¢ã§äœãããïŒå
¥åããïŒ"}
]
}]
}
åã«ããŽãªã®ã¢ã€ãã¢äŸ:
Document CreationïŒææžçæç³»ïŒ
| ã¹ãã«å | æŠèŠ | å ¥å | åºå |
|---|---|---|---|
| changelog-generator | Gitå±¥æŽããCHANGELOGçæ | Gitãªããžã㪠| CHANGELOG.md |
| email-drafter | çšä»¶ããã¡ãŒã«æé¢çæ | èŠç¹ã¡ã¢ | ã¡ãŒã«æ¬æ |
| invoice-generator | è«æ±æžèªåçæ | 顧客æ å ±+æçް | PDF/Markdown |
Workflow AutomationïŒäœæ¥èªååç³»ïŒ
| ã¹ãã«å | æŠèŠ | å ¥å | åºå |
|---|---|---|---|
| file-organizer | ãã¡ã€ã«æŽçã»ãªããŒã | ãã£ã¬ã¯ã㪠| æŽçåŸã®ããªãŒ |
| csv-transformer | CSV圢åŒå€æã»ã¯ãªãŒãã³ã° | CSV | 倿æžã¿CSV |
| git-branch-cleanup | äžèŠãã©ã³ãã®äžæ¬æŽç | Gitãªããžã㪠| ã¬ããŒã |
Data ProcessingïŒããŒã¿åŠçç³»ïŒ
| ã¹ãã«å | æŠèŠ | å ¥å | åºå |
|---|---|---|---|
| log-analyzer | ãã°ãã¡ã€ã«åæã»èŠçŽ | ãã°ãã¡ã€ã« | åæã¬ããŒã |
| json-schema-validator | JSONã¹ããŒãæ€èšŒ | JSON+ã¹ããŒã | æ€èšŒçµæ |
| text-summarizer | é·æããã¹ãã®èŠçŽ | ããã¹ã | èŠçŽ |
å ¥åå 容ïŒèªåã®ã¢ã€ãã¢ã®å ŽåïŒ:
以äžã®æ
å ±ã§ã¹ãã«ã®ã¢ã€ãã¢ãå
·äœåããŠãã ããïŒ
1. ã¹ãã«åïŒè±èªããã€ãã³åºåãïŒ: äŸ: changelog-generator
2. äžèšèª¬æ: äŸ: Gitå±¥æŽããCHANGELOGãèªåçæãã
3. ã«ããŽãª: Document Creation / Workflow Automation / Data Processing
4. å
¥å: äœãåãåãã
5. åºå: äœãçæããã
6. 誰ã䜿ãã: ãšã³ãžã㢠/ PM / ãã¶ã€ã㌠/ å
šå¡
7. æ¢åã¹ãã«ãšã®éã: ãã®ãããžã§ã¯ãã®æ¢åã¹ãã«ãšéè€ããªãã
ã¹ãã«åãšã«ããŽãªã決ãŸã£ãããStep 2ã«é²ã¿ãŸãã
æåŸ ãããçµæ: äœæããã¹ãã«ã®ååãã«ããŽãªãå ¥åºåãæç¢ºã«ãªãã
ð Step 2: SKILL.mdã®ãã©ããäœæ
Codex ã§ã¯éåžžãã£ããã§éžæè¢ãæç€ºããªããã§ããã®ãŸãŸé²ãã / äŸã ãç¢ºèª / ã¹ãããããéžã¹ãŸãã
AskQuestionã®èšå®äŸ:
{
"title": "ð Step 2: SKILL.mdã®ãã©ããäœæ",
"questions": [{
"id": "step_action",
"prompt": "ãã®ã¹ããããã©ãããŸããïŒ",
"options": [
{"id": "practice", "label": "ãã®ãŸãŸé²ããïŒèªåã®ã¹ãã«ã§äœæïŒ"},
{"id": "review", "label": "äŸã ã確èªããïŒãµã³ãã«SKILL.mdãèŠãïŒ"},
{"id": "skip", "label": "ã¹ããããã"}
]
}]
}
éžæåŸã®æ¡å ïŒäŸïŒ:
SKILL.mdã¯ä»¥äžã®æ§é ã§äœæããŸããProgressive Disclosureã«åºã¥ããã¡ã¿ããŒã¿ã¯100èªä»¥å ãæ¬æã¯5,000èªä»¥å ã«åããŸãã
å ¥åå 容ïŒäŸ: changelog-generator ã®å ŽåïŒ:
以äžã®ãã£ã¬ã¯ããªãšãã¡ã€ã«ãäœæããŠãã ããïŒ
mkdir -p skills/[ã¹ãã«å]/scripts
次ã«ãskills/[ã¹ãã«å]/SKILL.md ã以äžã®æ§é ã§äœæïŒ
---
name: [ã¹ãã«å]
description: "[äžèšèª¬æ]"
version: 1.0.0
author: [ããªãã®åå]
dependencies:
python: "3.9+"
packages: ["å¿
èŠãªããã±ãŒãž"]
---
# /[ã¹ãã«å] - [ã¹ãã«ã®è¡šç€ºå]
## æŠèŠ
[2-3æã§ã¹ãã«ã®ç®çãšäŸ¡å€ã説æ]
## ã¯ã€ãã¯ã¹ã¿ãŒã
### åºæ¬çãªäœ¿ãæ¹
```bash
python skills/[ã¹ãã«å]/scripts/main.py --input [å
¥å] --output [åºå]
ãªãã·ã§ã³ä»ã
python skills/[ã¹ãã«å]/scripts/main.py --input [å
¥å] --format markdown --verbose
ãã©ã¡ãŒã¿
| ãã©ã¡ãŒã¿ | å¿ é | ããã©ã«ã | 説æ |
|---|---|---|---|
| --input | ã¯ã | - | å ¥åãã¡ã€ã«/ãã£ã¬ã¯ã㪠|
| --output | ããã | stdout | åºåå ïŒãã¡ã€ã«ãã¹ãŸã㯠stdoutïŒ |
| --format | ããã | markdown | åºå圢åŒïŒmarkdown / json / textïŒ |
| --verbose | ããã | false | 詳现ãã°åºå |
åºåäŸ
[å®éã®åºåãµã³ãã«ãèšèŒ]
ããªã¬ãŒãã¬ãŒãº
ãã®ã¹ãã«ã¯ä»¥äžã®ãããªãªã¯ãšã¹ãã§çºåããŸãïŒ
- ã[ãã¬ãŒãº1]ã
- ã[ãã¬ãŒãº2]ã
- ã[ãã¬ãŒãº3]ã
泚æäºé
- [å¶çŽäºé 1]
- [å¶çŽäºé 2]
**æåŸ
ãããçµæ**: SKILL.mdã®ãã©ããã宿ããã¹ãã«ã®å
šäœèšèšãæç¢ºã«ãªãã
---
## ð Step 3: Pythonã¹ã¯ãªããã®å®è£
Codex ã§ã¯éåžžãã£ããã§éžæè¢ãæç€ºããªããã§ããã®ãŸãŸé²ãã / äŸã ãç¢ºèª / ã¹ãããããéžã¹ãŸãã
**AskQuestionã®èšå®äŸ:**
```json
{
"title": "ð Step 3: Pythonã¹ã¯ãªããã®å®è£
",
"questions": [{
"id": "step_action",
"prompt": "ãã®ã¹ããããã©ãããŸããïŒ",
"options": [
{"id": "practice", "label": "ãã®ãŸãŸé²ããïŒèªåã®ã¹ãã«çšã¹ã¯ãªãããäœæïŒ"},
{"id": "review", "label": "äŸã ã確èªããïŒãµã³ãã«ã¹ã¯ãªãããèŠãïŒ"},
{"id": "skip", "label": "ã¹ããããã"}
]
}]
}
éžæåŸã®æ¡å ïŒäŸïŒ:
scripts/main.py ã¯ä»¥äžã®æšæºãã¿ãŒã³ã§å®è£ ããŸãã
å ¥åå 容:
skills/[ã¹ãã«å]/scripts/main.py ãäœæããŠãã ããã
以äžã®ãã¿ãŒã³ã«åŸã£ãŠå®è£
ããŠãã ããïŒ
#!/usr/bin/env python3
"""
[ã¹ãã«å] - [äžèšèª¬æ]
Usage:
python main.py --input <å
¥å> [--output <åºå>] [--format <圢åŒ>]
"""
import argparse
import sys
import json
from pathlib import Path
from datetime import datetime
def parse_args():
"""ã³ãã³ãã©ã€ã³åŒæ°ã®ããŒã¹"""
parser = argparse.ArgumentParser(
description="[ã¹ãã«ã®èª¬æ]",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Examples:
python main.py --input data.csv
python main.py --input data.csv --output report.md --format markdown
"""
)
parser.add_argument("--input", "-i", required=True, help="å
¥åãã¡ã€ã«ãã¹")
parser.add_argument("--output", "-o", default=None, help="åºåãã¡ã€ã«ãã¹ïŒçç¥æã¯æšæºåºåïŒ")
parser.add_argument("--format", "-f", choices=["markdown", "json", "text"], default="markdown", help="åºå圢åŒ")
parser.add_argument("--verbose", "-v", action="store_true", help="詳现ãã°åºå")
parser.add_argument("--test", action="store_true", help="ãã¹ãã¢ãŒãã§å®è¡")
return parser.parse_args()
def validate_input(input_path: str) -> Path:
"""å
¥åãã¡ã€ã«ã®ååšç¢ºèª"""
path = Path(input_path)
if not path.exists():
print(f"ãšã©ãŒ: å
¥åãã¡ã€ã«ãèŠã€ãããŸãã: {input_path}", file=sys.stderr)
sys.exit(1)
return path
def process(input_path: Path, output_format: str, verbose: bool) -> str:
"""ã¡ã€ã³åŠçïŒããã«ã¹ãã«åºæã®ããžãã¯ãå®è£
ïŒ"""
if verbose:
print(f"åŠçäž: {input_path}", file=sys.stderr)
# TODO: ããã«ã¹ãã«åºæã®åŠçãå®è£
result = f"# åŠççµæ\n\n- å
¥å: {input_path}\n- 圢åŒ: {output_format}\n- åŠçæ¥æ: {datetime.now().isoformat()}\n"
return result
def output_result(result: str, output_path: str = None):
"""çµæã®åºå"""
if output_path:
Path(output_path).parent.mkdir(parents=True, exist_ok=True)
Path(output_path).write_text(result, encoding="utf-8")
print(f"åºåå®äº: {output_path}", file=sys.stderr)
else:
print(result)
def run_test():
"""ãã¹ãã¢ãŒã"""
print("=== ãã¹ãã¢ãŒã ===")
# ãã¹ãçšã®ãããŒå
¥åã§åäœç¢ºèª
test_input = Path("/tmp/test_input.txt")
test_input.write_text("ãã¹ãããŒã¿", encoding="utf-8")
result = process(test_input, "markdown", verbose=True)
print(result)
print("=== ãã¹ãå®äº ===")
# ã¯ãªãŒã³ã¢ãã
test_input.unlink(missing_ok=True)
def main():
args = parse_args()
if args.test:
run_test()
return
input_path = validate_input(args.input)
result = process(input_path, args.format, args.verbose)
output_result(result, args.output)
if __name__ == "__main__":
main()
---
äžèšã®ãã³ãã¬ãŒãã®ãTODOãéšåã«ãããªãã®ã¹ãã«åºæã®åŠçãå®è£
ããŠãã ããã
process() 颿°ã®äžèº«ããã¹ãã«ã®ç®çã«åãããŠæžãæããŸãã
æåŸ
ãããçµæ: main.py ã宿ããpython main.py --test ã§åäœç¢ºèªã§ããã
ð Step 4: SKILL.mdãæçµçã«ä»äžãã
Codex ã§ã¯éåžžãã£ããã§éžæè¢ãæç€ºããªããã§ããã®ãŸãŸé²ãã / äŸã ãç¢ºèª / ã¹ãããããéžã¹ãŸãã
AskQuestionã®èšå®äŸ:
{
"title": "ð Step 4: SKILL.mdãæçµçã«ä»äžãã",
"questions": [{
"id": "step_action",
"prompt": "ãã®ã¹ããããã©ãããŸããïŒ",
"options": [
{"id": "practice", "label": "ãã®ãŸãŸé²ãã"},
{"id": "review", "label": "äŸã ã確èªãã"},
{"id": "skip", "label": "ã¹ããããã"}
]
}]
}
éžæåŸã®æ¡å ïŒäŸïŒ:
Step 3ã§å®è£ ããå 容ãåæ ããSKILL.mdã宿ãããŸããAnthropicãã¹ããã©ã¯ãã£ã¹ã«æºæ ããŠããããã§ãã¯ããŸãã
å ¥åå 容:
Step 2ã§äœæããSKILL.mdã以äžã®èгç¹ã§æ¹åããŠãã ããïŒ
### Anthropicãã¹ããã©ã¯ãã£ã¹ ãã§ãã¯ãªã¹ã
1. **Progressive Disclosure**
- [ ] ã¡ã¿ããŒã¿ïŒname + descriptionïŒã¯100èªä»¥å
ã
- [ ] SKILL.mdæ¬æã¯5,000èªä»¥å
ã
- [ ] scripts/ ã¯å¿
èŠæã®ã¿èªã¿èŸŒãæ§æã
2. **ããªã¬ãŒã®ç²ŸåºŠ**
- [ ] æ£ããçºåãã¹ããã¬ãŒãºã5ã€ä»¥äžããã
- [ ] çºåãã¹ãã§ãªããã¬ãŒãºã3ã€ä»¥äžããã
- [ ] æ¢åã¹ãã«ãšã®ããªã¬ãŒè¡çªããªãã
3. **å
¥åºåã®æç¢ºã**
- [ ] å
¥å仿§ïŒåœ¢åŒãå¿
é /ä»»æïŒãæèšãããŠããã
- [ ] åºåãµã³ãã«ãå«ãŸããŠããã
- [ ] ãšã©ãŒæã®æåã説æãããŠããã
4. **å®çšæ§**
- [ ] ã¯ã€ãã¯ã¹ã¿ãŒãã®ã³ãã³ãäŸãã³ããã§åãã
- [ ] ãã©ã¡ãŒã¿è¡šãå®åãããŠããã
- [ ] 泚æäºé
ã»å¶çŽäºé
ãæèšãããŠããã
äžèšãã§ãã¯ãªã¹ãã«åºã¥ããŠSKILL.mdãæŽæ°ããŠãã ããã
æåŸ ãããçµæ: SKILL.mdããã¹ããã©ã¯ãã£ã¹ã«æºæ ããæçµçã«ãªãã
ð Step 5: åäœãã¹ã
Codex ã§ã¯éåžžãã£ããã§éžæè¢ãæç€ºããªããã§ããã®ãŸãŸé²ãã / äŸã ãç¢ºèª / ã¹ãããããéžã¹ãŸãã
AskQuestionã®èšå®äŸ:
{
"title": "ð Step 5: åäœãã¹ã",
"questions": [{
"id": "step_action",
"prompt": "ãã®ã¹ããããã©ãããŸããïŒ",
"options": [
{"id": "practice", "label": "ãã®ãŸãŸé²ãã"},
{"id": "review", "label": "äŸã ã確èªãã"},
{"id": "skip", "label": "ã¹ããããã"}
]
}]
}
éžæåŸã®æ¡å ïŒäŸïŒ:
å ¥åå 容:
äœæããã¹ãã«ã®åäœãã¹ããè¡ã£ãŠãã ããïŒ
1. ãã£ã¬ã¯ããªæ§é ã®ç¢ºèª
tree skills/[ã¹ãã«å]/
æåŸ
ãããæ§é :
[ã¹ãã«å]/
âââ SKILL.md
âââ scripts/
âââ main.py
2. ãã¹ãã¢ãŒãã§å®è¡
python skills/[ã¹ãã«å]/scripts/main.py --test
3. å®ããŒã¿ã§å®è¡
python skills/[ã¹ãã«å]/scripts/main.py --input [å®éã®ãã¡ã€ã«] --verbose
4. ãšã©ãŒã±ãŒã¹ã®ç¢ºèª
python skills/[ã¹ãã«å]/scripts/main.py --input nonexistent_file.txt
â é©åãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããã
5. åºå圢åŒã®ç¢ºèª
python skills/[ã¹ãã«å]/scripts/main.py --input [ãã¡ã€ã«] --format json
python skills/[ã¹ãã«å]/scripts/main.py --input [ãã¡ã€ã«] --format text
ãã¹ãŠã®ãã¹ããéã£ãããã¹ãã«ã¯å®æã§ãã
æåŸ ãããçµæ: æ£åžžç³»ã»ç°åžžç³»ãšãã«æåŸ éãã®åäœãããã
â ïž ãããããã©ãã«ãšè§£æ±ºæ¹æ³
Codex ã§ã¯éåžžãã£ããã§éžæè¢ãæç€ºããªããã§ãã©ãã«å 容ãéžãã§ããããæŒãã ãã§æ¡å ããŸãã
AskQuestionã®èšå®äŸ:
{
"title": "ãã©ãã«å
容ãéžæ",
"questions": [{
"id": "trouble",
"prompt": "åœãŠã¯ãŸãå
容ã1ã€éžãã§ãã ãã",
"options": [
{"id": "trouble_1", "label": "Pythonã¹ã¯ãªãããåããªã"},
{"id": "trouble_2", "label": "SKILL.mdã®æžãæ¹ãåãããªã"},
{"id": "trouble_3", "label": "ã¹ãã«ãClaude Codeããèªèãããªã"},
{"id": "trouble_4", "label": "ã¢ã€ãã¢ãæãã€ããªã"}
]
}]
}
ãã©ãã«1: Pythonã¹ã¯ãªãããåããªã
åå : ãã¹ãäŸåããã±ãŒãžã®åé¡ è§£æ±ºããã³ãã:
以äžã確èªããŠãã ããïŒ
1. python3 --version ã 3.9 以äžã
2. å¿
èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ãããŠãããïŒuv add [ããã±ãŒãžå]ïŒ
3. ã¹ã¯ãªããã®å®è¡æš©éããããïŒchmod +x scripts/main.pyïŒ
4. ãã¡ã€ã«ã®ãšã³ã³ãŒãã£ã³ã°ãUTF-8ã
ãã©ãã«2: SKILL.mdã®æžãæ¹ãåãããªã
åå : ãã³ãã¬ãŒããæœè±¡ç 解決ããã³ãã:
æãã·ã³ãã«ãªSKILL.mdã¯ä»¥äžã®3ã»ã¯ã·ã§ã³ã ãã§ååã§ãïŒ
1. ã¡ã¿ããŒã¿ïŒname, descriptionïŒ
2. ã¯ã€ãã¯ã¹ã¿ãŒãïŒã³ãã³ãäŸ1ã€ïŒ
3. ãã©ã¡ãŒã¿è¡š
ãŸããã®3ã€ã ãæžããŠãåŸããèä»ãããŸãããã
ãã©ãã«3: ã¹ãã«ãClaude Codeããèªèãããªã
åå : ãã£ã¬ã¯ããªé 眮ã®åé¡ è§£æ±ºããã³ãã:
ã¹ãã«ã¯ skills/[ã¹ãã«å]/ ã«é
眮ããå¿
èŠããããŸãã
以äžã確èªããŠãã ããïŒ
1. SKILL.md ã skills/[ã¹ãã«å]/SKILL.md ã«ããã
2. ãã¡ã€ã«åãæ£ç¢ºã« SKILL.md ãïŒå€§æåå°æåã«æ³šæïŒ
3. Claude Code ãåèµ·åã㊠/skill-name ã§åŒã³åºããŠã¿ãŠãã ãã
ãã©ãã«4: ã¢ã€ãã¢ãæãã€ããªã
åå : ã¹ãã«ã®æŠå¿µãæœè±¡ç 解決ããã³ãã:
以äžã®è³ªåã«çããŠã¿ãŠãã ããïŒ
1. æšæ¥ã®æ¥åã§ãé¢åã ãªããšæã£ãããšã¯ïŒ
2. æ¯é±åãäœæ¥ãç¹°ãè¿ããŠããããšã¯ïŒ
3. ãããèªååã§ãããããã®ã«ããšæã£ãããšã¯ïŒ
ãã®çããã¹ãã«ã®ã¢ã€ãã¢ã§ãã
â ãã§ãã¯ãã€ã³ã
- ã¹ãã«ã®ã¢ã€ãã¢ïŒååãã«ããŽãªãå ¥åºåïŒã決å®ãã
- SKILL.mdã®ãã©ãããäœæããã
- scripts/main.py ãå®è£ ããã
- SKILL.mdãAnthropicãã¹ããã©ã¯ãã£ã¹ã«æºæ ããŠãã
- ãã¹ãã¢ãŒãïŒ--testïŒã§åäœç¢ºèªæžã¿
- å®ããŒã¿ã§ã®åäœç¢ºèªæžã¿
- ãšã©ãŒã±ãŒã¹ã®åäœç¢ºèªæžã¿
ð ææç©ãã¬ãã¥ãŒ
æåŸ ãããåºå
ð skills/{skill_name}/
âââ SKILL.md (ã¹ãã«å®çŸ©)
âââ scripts/ (å®è¡ã¹ã¯ãªãã)
âââ tests/ (ãã¹ããã¡ã€ã«)
確èªã³ãã³ã
# ã¹ãã«ã®ãã£ã¬ã¯ããªæ§é ã確èª
tree skills/{skill_name}/ 2>/dev/null || find skills/{skill_name}/ -maxdepth 2 -type f | head -15
# SKILL.md ã®åé ã確èª
head -30 skills/{skill_name}/SKILL.md
â å®äºãã§ãã¯
以äžããã£ããã«è²Œãä»ããŠãå®äºç¶æ³ã確èªããŠãã ãã:
# å®äºç¢ºèª: 以äžã確èªããŠãã ããïŒ
# 1. skills/[ã¹ãã«å]/SKILL.md ãååšããã
# 2. skills/[ã¹ãã«å]/scripts/main.py ãååšããã
# 3. python skills/[ã¹ãã«å]/scripts/main.py --test ãæåããã
æåŸ ãããçµæ: ã¹ãã«ã®ãã£ã¬ã¯ããªæ§é ãæ£ããããã¹ããéãã
ð æ¬¡ã®ã¹ããã
ããã§ãã®ã»ã¯ã·ã§ã³ã¯å®äºã§ããæ¬¡ã®ã»ã¯ã·ã§ã³ãå§ããããæ°ãããŠã£ã³ããŠãéããŠãæ°ããã»ã¯ã·ã§ã³ãéå§ããŠãã ããã
Codex ã§ã¯éåžžãã£ããã§éžæè¢ãæç€ºããªããã§éžã¹ãŸãã
AskQuestionã®èšå®äŸ:
{
"title": "次ã®ã¹ããããéžæ",
"questions": [{
"id": "next_step",
"prompt": "次ã«é²ãæäœãéžãã§ãã ãã",
"options": [
{"id": "next_auto", "label": "次ã®ã»ã¯ã·ã§ã³ãéå§ïŒ/next_lessonïŒ"},
{"id": "next_window", "label": "æ°ãããŠã£ã³ããŠã§éå§ïŒ/start-7-8ïŒ"},
{"id": "finish", "label": "ããã§çµäºãã"}
]
}]
}
éžæåŸã®æ¡å ïŒäŸïŒ:
- next_auto â /next_lesson
- next_window â æ°ãããŠã£ã³ããŠã§ /start-7-8
- finish â çµäº