[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6R7RGHE10NM53Z2JY7TQ028":3,"skill-same:01M6R7RGHE10NM53Z2JY7TQ028":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":13,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6R7RGHE10NM53Z2JY7TQ028","reflect",null,"Learning capture system that extracts HIGH\u002FMED\u002FLOW confidence patterns from conversations to prevent repeating mistakes. Use after user corrections (\"no\", \"wrong\"), praise (\"perfect\", \"exactly\"), or when discovering edge cases. Complements .squad\u002Fagents\u002F{agent}\u002Fhistory.md and .squad\u002Fdecisions.md.","barichter\u002Fsquad","barichter","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96797186?v=4","01M6R712K8ESMDF089BFENBR16","01M6R712R74BSQQSG2GTXBWR8P",0,"MIT","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Fpackages\u002Fsquad-sdk\u002Ftemplates\u002Fskills\u002Freflect\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"when","memory","mistakes","Wrong","high","conversations","patterns","use","learning capture","user","decisions","capture","history","system","learning","team","edge","squad","2026-11-10 10:12:30",false,"---\nname: reflect\ndescription: Learning capture system that extracts HIGH\u002FMED\u002FLOW confidence patterns from conversations to prevent repeating mistakes. Use after user corrections (\"no\", \"wrong\"), praise (\"perfect\", \"exactly\"), or when discovering edge cases. Complements .squad\u002Fagents\u002F{agent}\u002Fhistory.md and .squad\u002Fdecisions.md.\nlicense: MIT\nversion: 1.0.0-squad\ndomain: team-memory, learning\nconfidence: high\n---\n\n# Reflect Skill\n\n**Critical learning capture system** for Squad. Prevents repeating mistakes and preserves successful patterns across sessions.\n\nAnalyze conversations and propose improvements to squad knowledge based on what worked, what didn't, and edge cases discovered. **Every correction is a learning opportunity.**\n\n---\n\n## Integration with Squad Architecture\n\n**Reflect complements existing Squad knowledge systems:**\n\n1. **`.squad\u002Fagents\u002F{agent}\u002Fhistory.md`** — Permanent learnings from completed work (append-only; each agent updates their own file; Scribe propagates cross-agent updates)\n2. **`.squad\u002Fdecisions.md`** — Team-wide decisions that all agents respect\n3. **`reflect` skill** — Captures in-flight learnings from conversations that may graduate to history.md or decisions.md\n\n**Workflow:**\n- Use `reflect` during work to capture learnings\n- At session end, review captured learnings\n- Promote HIGH confidence patterns → lead agent for decision.md review\n- Promote agent-specific patterns → `{agent}\u002Fhistory.md` updates\n\n---\n\n## Triggers\n\n### ? HIGH Priority (Invoke Immediately)\n\n| Trigger | Example | Why Critical |\n|---------|---------|--------------|\n| User correction | \"no\", \"wrong\", \"not like that\", \"never do\" | Captures mistakes to prevent repetition |\n| Architectural insight | \"you removed that without understanding why\" | Documents design decisions (Chesterton's Fence) |\n| Immediate fixes | \"debug\", \"root cause\", \"fix all\" | Learns from errors in real-time |\n\n### ? MEDIUM Priority (Invoke After Multiple)\n\n| Trigger | Example | Why Important |\n|---------|---------|---------------|\n| User praise | \"perfect\", \"exactly\", \"great\" | Reinforces successful patterns |\n| Tool preferences | \"use X instead of Y\", \"prefer\" | Builds workflow preferences |\n| Edge cases | \"what if X happens?\", \"don't forget\", \"ensure\" | Captures scenarios to handle |\n\n### ? LOW Priority (Invoke at Session End)\n\n| Trigger | Example | Why Useful |\n|---------|---------|------------|\n| Repeated patterns | Frequent use of specific commands\u002Ftools | Identifies workflow preferences |\n| Session end | After complex work | Consolidates all session learnings |\n\n---\n\n## Process\n\n### Phase 1: Identify Learning Target\n\nDetermine what knowledge system should be updated:\n\n1. **Agent-specific learning** → `.squad\u002Fagents\u002F{agent}\u002Fhistory.md`\n2. **Team-wide decision** → `.squad\u002Fdecisions\u002Finbox\u002F{agent}-{topic}.md`\n3. **Skill-specific improvement** → Document in session, recommend to skill owner\n\n### Phase 2: Analyze Conversation\n\nScan for learning signals with confidence levels:\n\n#### HIGH Confidence: Corrections\n\nUser actively steered or corrected output.\n\n**Detection patterns:**\n- Explicit rejection: \"no\", \"not like that\", \"that's wrong\"\n- Strong directives: \"never do\", \"always do\", \"don't ever\"\n- User provided alternative implementation\n\n**Example:**\n```text\nUser: \"No, use the azure-devops MCP tool instead of raw API calls\"\n→ [HIGH] + Add constraint: \"Prefer azure-devops MCP tools over REST API\"\n```\n\n#### MEDIUM Confidence: Success Patterns\n\nOutput was accepted or praised.\n\n**Detection patterns:**\n- Explicit praise: \"perfect\", \"great\", \"yes\", \"exactly\"\n- User built on output without modification\n- Output was committed without changes\n\n**Example:**\n```text\nUser: \"Perfect, that's exactly what I needed\"\n→ [MED] + Add preference: \"Include usage examples in documentation\"\n```\n\n#### MEDIUM Confidence: Edge Cases\n\nScenarios not anticipated.\n\n**Detection patterns:**\n- Questions not answered\n- Workarounds user had to apply\n- Error handling gaps discovered\n\n#### LOW Confidence: Preferences\n\nAccumulated patterns over time.\n\n---\n\n### Phase 3: Propose Learnings\n\nPresent findings:\n\n```text\n┌─────────────────────────────────────────────────────────────┐\n│ REFLECTION: {target (agent\u002Fdecision\u002Fskill)}                  │\n├─────────────────────────────────────────────────────────────┤\n│                                                             │\n│ [HIGH] + Add constraint: \"{specific constraint}\"            │\n│   Source: \"{quoted user correction}\"                        │\n│   Target: .squad\u002Fdecisions\u002Finbox\u002F{agent}-{topic}.md         │\n│                                                             │\n│ [MED]  + Add preference: \"{specific preference}\"            │\n│   Source: \"{evidence from conversation}\"                    │\n│   Target: .squad\u002Fagents\u002F{agent}\u002Fhistory.md                  │\n│                                                             │\n│ [LOW]  ~ Note for review: \"{observation}\"                   │\n│   Source: \"{pattern observed}\"                              │\n│   Target: Session notes only                                │\n│                                                             │\n├─────────────────────────────────────────────────────────────┤\n│ Apply changes? [Y\u002Fn\u002Fedit]                                   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n**Confidence Threshold:**\n\n| Threshold | Action |\n|-----------|--------|\n| ≥1 HIGH signal | Always propose (user explicitly corrected) |\n| ≥2 MED signals | Propose (sufficient pattern) |\n| ≥3 LOW signals | Propose (accumulated evidence) |\n| 1-2 LOW only | Skip (insufficient evidence) |\n\n### Phase 4: Persist Learnings\n\n**ALWAYS show changes before applying.**\n\nAfter user approval:\n\n1. **For Agent History:**\n   - Append to `.squad\u002Fagents\u002F{agent}\u002Fhistory.md` under `## Learnings` section\n   - Format: Date, assignment context, key learning\n\n2. **For Team Decisions:**\n   - Create `.squad\u002Fdecisions\u002Finbox\u002F{agent}-{topic}.md`\n   - Lead agent reviews and merges to `decisions.md` if appropriate\n\n3. **For Skills:**\n   - Document recommendation in session notes\n   - Squad lead reviews and routes to skill owner\n\n---\n\n## Usage Examples\n\n### Example 1: User Correction\n\n**Conversation:**\n```\nAgent: \"I'll use grep to search the repository\"\nUser: \"No, use the code search tools first, grep is too slow\"\n```\n\n**Reflection Output:**\n```\n[HIGH] + Add constraint: \"Use code intelligence tools before grep\"\n  Source: \"No, use the code search tools first, grep is too slow\"\n  Target: .squad\u002Fagents\u002F{agent}\u002Fhistory.md\n```\n\n### Example 2: Success Pattern\n\n**Conversation:**\n```\nAgent: [Creates PR with detailed description and test plan]\nUser: \"Perfect! This is exactly the format I want for all PRs\"\n```\n\n**Reflection Output:**\n```\n[MED] + Add preference: \"Include test plan in PR descriptions\"\n  Source: User praised detailed PR format\n  Target: .squad\u002Fdecisions\u002Finbox\u002Fpr-format.md (for team adoption)\n```\n\n---\n\n## When to Use\n\n✅ **Use reflect when:**\n- User says \"no\", \"wrong\", \"not like that\" (HIGH priority)\n- User says \"perfect\", \"exactly\", \"great\" (MED priority)\n- You discover edge cases or gaps\n- Complex work session with multiple learnings\n- At end of sprint\u002Fmilestone to consolidate patterns\n\n❌ **Don't use reflect when:**\n- Simple one-off questions with no pattern\n- User is just exploring ideas (no concrete decisions)\n- Learning is already captured in history.md\u002Fdecisions.md\n\n---\n\n## See Also\n\n- `.squad\u002Fdecisions.md` — Team-wide decisions\n- `.squad\u002Fagents\u002F*\u002Fhistory.md` — Agent-specific learnings\n- `.squad\u002Frouting.md` — Work assignment patterns\n","# Reflect Skill\n\n**Critical learning capture system** for Squad. Prevents repeating mistakes and preserves successful patterns across sessions.\n\nAnalyze conversations and propose improvements to squad knowledge based on what worked, what didn't, and edge cases discovered. **Every correction is a learning opportunity.**\n\n---\n\n## Integration with Squad Architecture\n\n**Reflect complements existing Squad knowledge systems:**\n\n1. **`.squad\u002Fagents\u002F{agent}\u002Fhistory.md`** — Permanent learnings from completed work (append-only; each agent updates their own file; Scribe propagates cross-agent updates)\n2. **`.squad\u002Fdecisions.md`** — Team-wide decisions that all agents respect\n3. **`reflect` skill** — Captures in-flight learnings from conversations that may graduate to history.md or decisions.md\n\n**Workflow:**\n- Use `reflect` during work to capture learnings\n- At session end, review captured learnings\n- Promote HIGH confidence patterns → lead agent for decision.md review\n- Promote agent-specific patterns → `{agent}\u002Fhistory.md` updates\n\n---\n\n## Triggers\n\n### ? HIGH Priority (Invoke Immediately)\n\n| Trigger | Example | Why Critical |\n|---------|---------|--------------|\n| User correction | \"no\", \"wrong\", \"not like that\", \"never do\" | Captures mistakes to prevent repetition |\n| Architectural insight | \"you removed that without understanding why\" | Documents design decisions (Chesterton's Fence) |\n| Immediate fixes | \"debug\", \"root cause\", \"fix all\" | Learns from errors in real-time |\n\n### ? MEDIUM Priority (Invoke After Multiple)\n\n| Trigger | Example | Why Important |\n|---------|---------|---------------|\n| User praise | \"perfect\", \"exactly\", \"great\" | Reinforces successful patterns |\n| Tool preferences | \"use X instead of Y\", \"prefer\" | Builds workflow preferences |\n| Edge cases | \"what if X happens?\", \"don't forget\", \"ensure\" | Captures scenarios to handle |\n\n### ? LOW Priority (Invoke at Session End)\n\n| Trigger | Example | Why Useful |\n|---------|---------|------------|\n| Repeated patterns | Frequent use of specific commands\u002Ftools | Identifies workflow preferences |\n| Session end | After complex work | Consolidates all session learnings |\n\n---\n\n## Process\n\n### Phase 1: Identify Learning Target\n\nDetermine what knowledge system should be updated:\n\n1. **Agent-specific learning** → `.squad\u002Fagents\u002F{agent}\u002Fhistory.md`\n2. **Team-wide decision** → `.squad\u002Fdecisions\u002Finbox\u002F{agent}-{topic}.md`\n3. **Skill-specific improvement** → Document in session, recommend to skill owner\n\n### Phase 2: Analyze Conversation\n\nScan for learning signals with confidence levels:\n\n#### HIGH Confidence: Corrections\n\nUser actively steered or corrected output.\n\n**Detection patterns:**\n- Explicit rejection: \"no\", \"not like that\", \"that's wrong\"\n- Strong directives: \"never do\", \"always do\", \"don't ever\"\n- User provided alternative implementation\n\n**Example:**\n```text\nUser: \"No, use the azure-devops MCP tool instead of raw API calls\"\n→ [HIGH] + Add constraint: \"Prefer azure-devops MCP tools over REST API\"\n```\n\n#### MEDIUM Confidence: Success Patterns\n\nOutput was accepted or praised.\n\n**Detection patterns:**\n- Explicit praise: \"perfect\", \"great\", \"yes\", \"exactly\"\n- User built on output without modification\n- Output was committed without changes\n\n**Example:**\n```text\nUser: \"Perfect, that's exactly what I needed\"\n→ [MED] + Add preference: \"Include usage examples in documentation\"\n```\n\n#### MEDIUM Confidence: Edge Cases\n\nScenarios not anticipated.\n\n**Detection patterns:**\n- Questions not answered\n- Workarounds user had to apply\n- Error handling gaps discovered\n\n#### LOW Confidence: Preferences\n\nAccumulated patterns over time.\n\n---\n\n### Phase 3: Propose Learnings\n\nPresent findings:\n\n```text\n┌─────────────────────────────────────────────────────────────┐\n│ REFLECTION: {target (agent\u002Fdecision\u002Fskill)}                  │\n├─────────────────────────────────────────────────────────────┤\n│                                                             │\n│ [HIGH] + Add constraint: \"{specific constraint}\"            │\n│   Source: \"{quoted user correction}\"                        │\n│   Target: .squad\u002Fdecisions\u002Finbox\u002F{agent}-{topic}.md         │\n│                                                             │\n│ [MED]  + Add preference: \"{specific preference}\"            │\n│   Source: \"{evidence from conversation}\"                    │\n│   Target: .squad\u002Fagents\u002F{agent}\u002Fhistory.md                  │\n│                                                             │\n│ [LOW]  ~ Note for review: \"{observation}\"                   │\n│   Source: \"{pattern observed}\"                              │\n│   Target: Session notes only                                │\n│                                                             │\n├─────────────────────────────────────────────────────────────┤\n│ Apply changes? [Y\u002Fn\u002Fedit]                                   │\n└─────────────────────────────────────────────────────────────┘\n```\n\n**Confidence Threshold:**\n\n| Threshold | Action |\n|-----------|--------|\n| ≥1 HIGH signal | Always propose (user explicitly corrected) |\n| ≥2 MED signals | Propose (sufficient pattern) |\n| ≥3 LOW signals | Propose (accumulated evidence) |\n| 1-2 LOW only | Skip (insufficient evidence) |\n\n### Phase 4: Persist Learnings\n\n**ALWAYS show changes before applying.**\n\nAfter user approval:\n\n1. **For Agent History:**\n   - Append to `.squad\u002Fagents\u002F{agent}\u002Fhistory.md` under `## Learnings` section\n   - Format: Date, assignment context, key learning\n\n2. **For Team Decisions:**\n   - Create `.squad\u002Fdecisions\u002Finbox\u002F{agent}-{topic}.md`\n   - Lead agent reviews and merges to `decisions.md` if appropriate\n\n3. **For Skills:**\n   - Document recommendation in session notes\n   - Squad lead reviews and routes to skill owner\n\n---\n\n## Usage Examples\n\n### Example 1: User Correction\n\n**Conversation:**\n```\nAgent: \"I'll use grep to search the repository\"\nUser: \"No, use the code search tools first, grep is too slow\"\n```\n\n**Reflection Output:**\n```\n[HIGH] + Add constraint: \"Use code intelligence tools before grep\"\n  Source: \"No, use the code search tools first, grep is too slow\"\n  Target: .squad\u002Fagents\u002F{agent}\u002Fhistory.md\n```\n\n### Example 2: Success Pattern\n\n**Conversation:**\n```\nAgent: [Creates PR with detailed description and test plan]\nUser: \"Perfect! This is exactly the format I want for all PRs\"\n```\n\n**Reflection Output:**\n```\n[MED] + Add preference: \"Include test plan in PR descriptions\"\n  Source: User praised detailed PR format\n  Target: .squad\u002Fdecisions\u002Finbox\u002Fpr-format.md (for team adoption)\n```\n\n---\n\n## When to Use\n\n✅ **Use reflect when:**\n- User says \"no\", \"wrong\", \"not like that\" (HIGH priority)\n- User says \"perfect\", \"exactly\", \"great\" (MED priority)\n- You discover edge cases or gaps\n- Complex work session with multiple learnings\n- At end of sprint\u002Fmilestone to consolidate patterns\n\n❌ **Don't use reflect when:**\n- Simple one-off questions with no pattern\n- User is just exploring ideas (no concrete decisions)\n- Learning is already captured in history.md\u002Fdecisions.md\n\n---\n\n## See Also\n\n- `.squad\u002Fdecisions.md` — Team-wide decisions\n- `.squad\u002Fagents\u002F*\u002Fhistory.md` — Agent-specific learnings\n- `.squad\u002Frouting.md` — Work assignment patterns\n",{"name":5,"domain":41,"license":14,"version":42,"confidence":22,"description":7},"team-memory, learning","1.0.0-squad","dev","ec19f5e92325e634e3c6eff500e3cefa56131cc9","packages\u002Fsquad-sdk\u002Ftemplates\u002Fskills\u002Freflect","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad","https:\u002F\u002Fgithub.com\u002Fbarichter","2026-04-13 22:53:46",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add barichter\u002Fsquad --skill reflect",{"tool":55,"command":56},"bunx","bunx skills add barichter\u002Fsquad --skill reflect",{"tool":58,"command":59},"pnpm","pnpm dlx skills add barichter\u002Fsquad --skill reflect","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Fpackages\u002Fsquad-sdk\u002Ftemplates\u002Fskills\u002Freflect\u002FSKILL.md",true,[],[64,80,88,102,123,129],{"skillNo":65,"name":66,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":74,"publishedAt":36},"01M6R7VE8SZD1E37WWJN4ZFPWB","My Skill","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fmy-skill\u002FSKILL.md",[69],{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[75,76,77,78,79],"my","my skill","tester","vitest","testing",{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":36},"01M6R7VD19M4TMAA74XGD6QSZX","bad-skill","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fbad-skill\u002FSKILL.md",[],[86,87],"bad skill","bad",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":36},"01M6R7V9TYTX6Z621V6RWA51G6","squad-conventions","Core conventions and patterns used in the Squad codebase","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fsquad-conventions\u002FSKILL.md",[],[95,35,96,97,98,24,99,100,22,101],"squad conventions","conventions","project-conventions","core","project","manual","codebase",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":36},"01M6R7TTF0ABMGSVWASVYF6D51","rework-rate","Measure and interpret PR rework rate — the emerging 5th DORA metric","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Frework-rate\u002FSKILL.md",[],[109,110,111,112,113,18,114,115,116,22,35,117,118,119,120,33,121,122,100],"rate","rework rate","metric","efficiency","prs","pr","review","code quality","code","code-review","metrics","health","analyze","quality",{"skillNo":124,"name":125,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":36},"01M6R7TRZPET44JRCSQF08EEA8","nap","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fnap\u002FSKILL.md",[],[125],{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":36},"01M6R7TK10WCT77A52E27GR5R3","{skill-name}","{what this skill teaches agents}","https:\u002F\u002Fgithub.com\u002Fbarichter\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskill.md",[135],{"categoryNo":70,"categoryName":71,"taxonomyType":72,"taxonomyTypeDesc":73},[137,138,139,140,141,142,143,144,145,146,100,22,79],"{skill name}","skill name","name","design","api","how","error-handling","learned","error","api-design"]