gsd-pi 2.29.0-dev.77f06e2 → 2.29.0-dev.f08b4fe
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extension-registry.d.ts +63 -0
- package/dist/extension-registry.js +166 -0
- package/dist/headless.js +4 -0
- package/dist/loader.js +10 -1
- package/dist/resource-loader.js +11 -1
- package/dist/resources/extensions/async-jobs/extension-manifest.json +13 -0
- package/dist/resources/extensions/bg-shell/extension-manifest.json +14 -0
- package/dist/resources/extensions/browser-tools/extension-manifest.json +37 -0
- package/dist/resources/extensions/context7/extension-manifest.json +12 -0
- package/dist/resources/extensions/google-search/extension-manifest.json +12 -0
- package/dist/resources/extensions/gsd/auto-dashboard.ts +31 -0
- package/dist/resources/extensions/gsd/auto-dispatch.ts +32 -3
- package/dist/resources/extensions/gsd/auto-post-unit.ts +39 -10
- package/dist/resources/extensions/gsd/auto-prompts.ts +40 -17
- package/dist/resources/extensions/gsd/auto-recovery.ts +2 -1
- package/dist/resources/extensions/gsd/auto-start.ts +18 -32
- package/dist/resources/extensions/gsd/auto-worktree.ts +21 -182
- package/dist/resources/extensions/gsd/auto.ts +2 -9
- package/dist/resources/extensions/gsd/captures.ts +4 -10
- package/dist/resources/extensions/gsd/commands-extensions.ts +328 -0
- package/dist/resources/extensions/gsd/commands-handlers.ts +2 -1
- package/dist/resources/extensions/gsd/commands.ts +53 -2
- package/dist/resources/extensions/gsd/detection.ts +2 -1
- package/dist/resources/extensions/gsd/doctor-checks.ts +49 -1
- package/dist/resources/extensions/gsd/doctor-types.ts +3 -1
- package/dist/resources/extensions/gsd/extension-manifest.json +18 -0
- package/dist/resources/extensions/gsd/forensics.ts +2 -2
- package/dist/resources/extensions/gsd/git-service.ts +3 -2
- package/dist/resources/extensions/gsd/gitignore.ts +9 -63
- package/dist/resources/extensions/gsd/gsd-db.ts +1 -165
- package/dist/resources/extensions/gsd/guided-flow.ts +8 -5
- package/dist/resources/extensions/gsd/index.ts +3 -3
- package/dist/resources/extensions/gsd/md-importer.ts +3 -2
- package/dist/resources/extensions/gsd/mechanical-completion.ts +430 -0
- package/dist/resources/extensions/gsd/migrate/command.ts +3 -2
- package/dist/resources/extensions/gsd/migrate/writer.ts +2 -1
- package/dist/resources/extensions/gsd/migrate-external.ts +123 -0
- package/dist/resources/extensions/gsd/paths.ts +24 -2
- package/dist/resources/extensions/gsd/post-unit-hooks.ts +6 -5
- package/dist/resources/extensions/gsd/preferences-models.ts +7 -1
- package/dist/resources/extensions/gsd/preferences-validation.ts +2 -1
- package/dist/resources/extensions/gsd/preferences.ts +10 -5
- package/dist/resources/extensions/gsd/prompts/discuss-headless.md +4 -2
- package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
- package/dist/resources/extensions/gsd/prompts/plan-milestone.md +26 -2
- package/dist/resources/extensions/gsd/prompts/plan-slice.md +15 -1
- package/dist/resources/extensions/gsd/repo-identity.ts +148 -0
- package/dist/resources/extensions/gsd/resource-version.ts +99 -0
- package/dist/resources/extensions/gsd/session-forensics.ts +4 -3
- package/dist/resources/extensions/gsd/tests/activity-log.test.ts +2 -2
- package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +3 -3
- package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -58
- package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +3 -4
- package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +5 -18
- package/dist/resources/extensions/gsd/tests/git-service.test.ts +10 -37
- package/dist/resources/extensions/gsd/tests/knowledge.test.ts +4 -4
- package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
- package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +1 -0
- package/dist/resources/extensions/gsd/tests/token-profile.test.ts +14 -16
- package/dist/resources/extensions/gsd/triage-resolution.ts +2 -1
- package/dist/resources/extensions/gsd/types.ts +2 -0
- package/dist/resources/extensions/gsd/worktree-command.ts +1 -11
- package/dist/resources/extensions/gsd/worktree-manager.ts +3 -2
- package/dist/resources/extensions/gsd/worktree.ts +42 -5
- package/dist/resources/extensions/mac-tools/extension-manifest.json +16 -0
- package/dist/resources/extensions/mcporter/extension-manifest.json +12 -0
- package/dist/resources/extensions/remote-questions/extension-manifest.json +11 -0
- package/dist/resources/extensions/search-the-web/extension-manifest.json +13 -0
- package/dist/resources/extensions/slash-commands/extension-manifest.json +11 -0
- package/dist/resources/extensions/subagent/extension-manifest.json +13 -0
- package/dist/resources/extensions/ttsr/extension-manifest.json +11 -0
- package/dist/resources/extensions/universal-config/extension-manifest.json +13 -0
- package/dist/resources/extensions/voice/extension-manifest.json +12 -0
- package/dist/resources/skills/create-gsd-extension/SKILL.md +87 -0
- package/dist/resources/skills/create-gsd-extension/references/compaction-session-control.md +77 -0
- package/dist/resources/skills/create-gsd-extension/references/custom-commands.md +139 -0
- package/dist/resources/skills/create-gsd-extension/references/custom-rendering.md +108 -0
- package/dist/resources/skills/create-gsd-extension/references/custom-tools.md +183 -0
- package/dist/resources/skills/create-gsd-extension/references/custom-ui.md +490 -0
- package/dist/resources/skills/create-gsd-extension/references/events-reference.md +126 -0
- package/dist/resources/skills/create-gsd-extension/references/extension-lifecycle.md +64 -0
- package/dist/resources/skills/create-gsd-extension/references/extensionapi-reference.md +75 -0
- package/dist/resources/skills/create-gsd-extension/references/extensioncontext-reference.md +53 -0
- package/dist/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +36 -0
- package/dist/resources/skills/create-gsd-extension/references/mode-behavior.md +32 -0
- package/dist/resources/skills/create-gsd-extension/references/model-provider-management.md +89 -0
- package/dist/resources/skills/create-gsd-extension/references/packaging-distribution.md +55 -0
- package/dist/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +90 -0
- package/dist/resources/skills/create-gsd-extension/references/state-management.md +70 -0
- package/dist/resources/skills/create-gsd-extension/references/system-prompt-modification.md +52 -0
- package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
- package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
- package/dist/resources/skills/create-gsd-extension/workflows/add-capability.md +57 -0
- package/dist/resources/skills/create-gsd-extension/workflows/create-extension.md +156 -0
- package/dist/resources/skills/create-gsd-extension/workflows/debug-extension.md +74 -0
- package/dist/resources/skills/create-skill/SKILL.md +184 -0
- package/dist/resources/skills/create-skill/references/api-security.md +226 -0
- package/dist/resources/skills/create-skill/references/be-clear-and-direct.md +531 -0
- package/dist/resources/skills/create-skill/references/common-patterns.md +595 -0
- package/dist/resources/skills/create-skill/references/core-principles.md +437 -0
- package/dist/resources/skills/create-skill/references/executable-code.md +175 -0
- package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +68 -0
- package/dist/resources/skills/create-skill/references/iteration-and-testing.md +474 -0
- package/dist/resources/skills/create-skill/references/recommended-structure.md +168 -0
- package/dist/resources/skills/create-skill/references/skill-structure.md +372 -0
- package/dist/resources/skills/create-skill/references/use-xml-tags.md +466 -0
- package/dist/resources/skills/create-skill/references/using-scripts.md +113 -0
- package/dist/resources/skills/create-skill/references/using-templates.md +112 -0
- package/dist/resources/skills/create-skill/references/workflows-and-validation.md +510 -0
- package/dist/resources/skills/create-skill/templates/router-skill.md +73 -0
- package/dist/resources/skills/create-skill/templates/simple-skill.md +33 -0
- package/dist/resources/skills/create-skill/workflows/add-reference.md +96 -0
- package/dist/resources/skills/create-skill/workflows/add-script.md +93 -0
- package/dist/resources/skills/create-skill/workflows/add-template.md +74 -0
- package/dist/resources/skills/create-skill/workflows/add-workflow.md +120 -0
- package/dist/resources/skills/create-skill/workflows/audit-skill.md +148 -0
- package/dist/resources/skills/create-skill/workflows/create-new-skill.md +196 -0
- package/dist/resources/skills/create-skill/workflows/get-guidance.md +121 -0
- package/dist/resources/skills/create-skill/workflows/upgrade-to-router.md +161 -0
- package/dist/resources/skills/create-skill/workflows/verify-skill.md +204 -0
- package/dist/resources/skills/react-best-practices/SKILL.md +1 -1
- package/package.json +1 -1
- package/packages/native/dist/native.d.ts +2 -0
- package/packages/native/dist/native.js +19 -5
- package/packages/native/src/native.ts +23 -9
- package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/client.js +3 -0
- package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
- package/packages/pi-coding-agent/src/core/lsp/client.ts +3 -0
- package/src/resources/extensions/async-jobs/extension-manifest.json +13 -0
- package/src/resources/extensions/bg-shell/extension-manifest.json +14 -0
- package/src/resources/extensions/browser-tools/extension-manifest.json +37 -0
- package/src/resources/extensions/context7/extension-manifest.json +12 -0
- package/src/resources/extensions/google-search/extension-manifest.json +12 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +31 -0
- package/src/resources/extensions/gsd/auto-dispatch.ts +32 -3
- package/src/resources/extensions/gsd/auto-post-unit.ts +39 -10
- package/src/resources/extensions/gsd/auto-prompts.ts +40 -17
- package/src/resources/extensions/gsd/auto-recovery.ts +2 -1
- package/src/resources/extensions/gsd/auto-start.ts +18 -32
- package/src/resources/extensions/gsd/auto-worktree.ts +21 -182
- package/src/resources/extensions/gsd/auto.ts +2 -9
- package/src/resources/extensions/gsd/captures.ts +4 -10
- package/src/resources/extensions/gsd/commands-extensions.ts +328 -0
- package/src/resources/extensions/gsd/commands-handlers.ts +2 -1
- package/src/resources/extensions/gsd/commands.ts +53 -2
- package/src/resources/extensions/gsd/detection.ts +2 -1
- package/src/resources/extensions/gsd/doctor-checks.ts +49 -1
- package/src/resources/extensions/gsd/doctor-types.ts +3 -1
- package/src/resources/extensions/gsd/extension-manifest.json +18 -0
- package/src/resources/extensions/gsd/forensics.ts +2 -2
- package/src/resources/extensions/gsd/git-service.ts +3 -2
- package/src/resources/extensions/gsd/gitignore.ts +9 -63
- package/src/resources/extensions/gsd/gsd-db.ts +1 -165
- package/src/resources/extensions/gsd/guided-flow.ts +8 -5
- package/src/resources/extensions/gsd/index.ts +3 -3
- package/src/resources/extensions/gsd/md-importer.ts +3 -2
- package/src/resources/extensions/gsd/mechanical-completion.ts +430 -0
- package/src/resources/extensions/gsd/migrate/command.ts +3 -2
- package/src/resources/extensions/gsd/migrate/writer.ts +2 -1
- package/src/resources/extensions/gsd/migrate-external.ts +123 -0
- package/src/resources/extensions/gsd/paths.ts +24 -2
- package/src/resources/extensions/gsd/post-unit-hooks.ts +6 -5
- package/src/resources/extensions/gsd/preferences-models.ts +7 -1
- package/src/resources/extensions/gsd/preferences-validation.ts +2 -1
- package/src/resources/extensions/gsd/preferences.ts +10 -5
- package/src/resources/extensions/gsd/prompts/discuss-headless.md +4 -2
- package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
- package/src/resources/extensions/gsd/prompts/plan-milestone.md +26 -2
- package/src/resources/extensions/gsd/prompts/plan-slice.md +15 -1
- package/src/resources/extensions/gsd/repo-identity.ts +148 -0
- package/src/resources/extensions/gsd/resource-version.ts +99 -0
- package/src/resources/extensions/gsd/session-forensics.ts +4 -3
- package/src/resources/extensions/gsd/tests/activity-log.test.ts +2 -2
- package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +3 -3
- package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -58
- package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +3 -4
- package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +5 -18
- package/src/resources/extensions/gsd/tests/git-service.test.ts +10 -37
- package/src/resources/extensions/gsd/tests/knowledge.test.ts +4 -4
- package/src/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
- package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +1 -0
- package/src/resources/extensions/gsd/tests/token-profile.test.ts +14 -16
- package/src/resources/extensions/gsd/triage-resolution.ts +2 -1
- package/src/resources/extensions/gsd/types.ts +2 -0
- package/src/resources/extensions/gsd/worktree-command.ts +1 -11
- package/src/resources/extensions/gsd/worktree-manager.ts +3 -2
- package/src/resources/extensions/gsd/worktree.ts +42 -5
- package/src/resources/extensions/mac-tools/extension-manifest.json +16 -0
- package/src/resources/extensions/mcporter/extension-manifest.json +12 -0
- package/src/resources/extensions/remote-questions/extension-manifest.json +11 -0
- package/src/resources/extensions/search-the-web/extension-manifest.json +13 -0
- package/src/resources/extensions/slash-commands/extension-manifest.json +11 -0
- package/src/resources/extensions/subagent/extension-manifest.json +13 -0
- package/src/resources/extensions/ttsr/extension-manifest.json +11 -0
- package/src/resources/extensions/universal-config/extension-manifest.json +13 -0
- package/src/resources/extensions/voice/extension-manifest.json +12 -0
- package/src/resources/skills/create-gsd-extension/SKILL.md +87 -0
- package/src/resources/skills/create-gsd-extension/references/compaction-session-control.md +77 -0
- package/src/resources/skills/create-gsd-extension/references/custom-commands.md +139 -0
- package/src/resources/skills/create-gsd-extension/references/custom-rendering.md +108 -0
- package/src/resources/skills/create-gsd-extension/references/custom-tools.md +183 -0
- package/src/resources/skills/create-gsd-extension/references/custom-ui.md +490 -0
- package/src/resources/skills/create-gsd-extension/references/events-reference.md +126 -0
- package/src/resources/skills/create-gsd-extension/references/extension-lifecycle.md +64 -0
- package/src/resources/skills/create-gsd-extension/references/extensionapi-reference.md +75 -0
- package/src/resources/skills/create-gsd-extension/references/extensioncontext-reference.md +53 -0
- package/src/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +36 -0
- package/src/resources/skills/create-gsd-extension/references/mode-behavior.md +32 -0
- package/src/resources/skills/create-gsd-extension/references/model-provider-management.md +89 -0
- package/src/resources/skills/create-gsd-extension/references/packaging-distribution.md +55 -0
- package/src/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +90 -0
- package/src/resources/skills/create-gsd-extension/references/state-management.md +70 -0
- package/src/resources/skills/create-gsd-extension/references/system-prompt-modification.md +52 -0
- package/src/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
- package/src/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
- package/src/resources/skills/create-gsd-extension/workflows/add-capability.md +57 -0
- package/src/resources/skills/create-gsd-extension/workflows/create-extension.md +156 -0
- package/src/resources/skills/create-gsd-extension/workflows/debug-extension.md +74 -0
- package/src/resources/skills/create-skill/SKILL.md +184 -0
- package/src/resources/skills/create-skill/references/api-security.md +226 -0
- package/src/resources/skills/create-skill/references/be-clear-and-direct.md +531 -0
- package/src/resources/skills/create-skill/references/common-patterns.md +595 -0
- package/src/resources/skills/create-skill/references/core-principles.md +437 -0
- package/src/resources/skills/create-skill/references/executable-code.md +175 -0
- package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +68 -0
- package/src/resources/skills/create-skill/references/iteration-and-testing.md +474 -0
- package/src/resources/skills/create-skill/references/recommended-structure.md +168 -0
- package/src/resources/skills/create-skill/references/skill-structure.md +372 -0
- package/src/resources/skills/create-skill/references/use-xml-tags.md +466 -0
- package/src/resources/skills/create-skill/references/using-scripts.md +113 -0
- package/src/resources/skills/create-skill/references/using-templates.md +112 -0
- package/src/resources/skills/create-skill/references/workflows-and-validation.md +510 -0
- package/src/resources/skills/create-skill/templates/router-skill.md +73 -0
- package/src/resources/skills/create-skill/templates/simple-skill.md +33 -0
- package/src/resources/skills/create-skill/workflows/add-reference.md +96 -0
- package/src/resources/skills/create-skill/workflows/add-script.md +93 -0
- package/src/resources/skills/create-skill/workflows/add-template.md +74 -0
- package/src/resources/skills/create-skill/workflows/add-workflow.md +120 -0
- package/src/resources/skills/create-skill/workflows/audit-skill.md +148 -0
- package/src/resources/skills/create-skill/workflows/create-new-skill.md +196 -0
- package/src/resources/skills/create-skill/workflows/get-guidance.md +121 -0
- package/src/resources/skills/create-skill/workflows/upgrade-to-router.md +161 -0
- package/src/resources/skills/create-skill/workflows/verify-skill.md +204 -0
- package/src/resources/skills/react-best-practices/SKILL.md +1 -1
- package/dist/resources/extensions/gsd/auto-worktree-sync.ts +0 -199
- package/dist/resources/extensions/gsd/tests/worktree-db-integration.test.ts +0 -205
- package/dist/resources/extensions/gsd/tests/worktree-db.test.ts +0 -442
- package/src/resources/extensions/gsd/auto-worktree-sync.ts +0 -199
- package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +0 -205
- package/src/resources/extensions/gsd/tests/worktree-db.test.ts +0 -442
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: create-skill
|
|
3
|
+
description: Expert guidance for creating, writing, building, and refining GSD skills. Use when working with SKILL.md files, authoring new skills, improving existing skills, or understanding skill structure and best practices.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<essential_principles>
|
|
7
|
+
## How Skills Work
|
|
8
|
+
|
|
9
|
+
Skills are modular, filesystem-based capabilities that provide domain expertise on demand. This skill teaches how to create effective skills.
|
|
10
|
+
|
|
11
|
+
### 1. Skills Are Prompts
|
|
12
|
+
|
|
13
|
+
All prompting best practices apply. Be clear, be direct, use XML structure. Assume Claude is smart - only add context Claude doesn't have.
|
|
14
|
+
|
|
15
|
+
### 2. SKILL.md Is Always Loaded
|
|
16
|
+
|
|
17
|
+
When a skill is invoked, Claude reads SKILL.md. Use this guarantee:
|
|
18
|
+
- Essential principles go in SKILL.md (can't be skipped)
|
|
19
|
+
- Workflow-specific content goes in workflows/
|
|
20
|
+
- Reusable knowledge goes in references/
|
|
21
|
+
|
|
22
|
+
### 3. Router Pattern for Complex Skills
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
skill-name/
|
|
26
|
+
├── SKILL.md # Router + principles
|
|
27
|
+
├── workflows/ # Step-by-step procedures (FOLLOW)
|
|
28
|
+
├── references/ # Domain knowledge (READ)
|
|
29
|
+
├── templates/ # Output structures (COPY + FILL)
|
|
30
|
+
└── scripts/ # Reusable code (EXECUTE)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
SKILL.md asks "what do you want to do?" → routes to workflow → workflow specifies which references to read.
|
|
34
|
+
|
|
35
|
+
**When to use each folder:**
|
|
36
|
+
- **workflows/** - Multi-step procedures Claude follows
|
|
37
|
+
- **references/** - Domain knowledge Claude reads for context
|
|
38
|
+
- **templates/** - Consistent output structures Claude copies and fills (plans, specs, configs)
|
|
39
|
+
- **scripts/** - Executable code Claude runs as-is (deploy, setup, API calls)
|
|
40
|
+
|
|
41
|
+
### 4. Pure XML Structure
|
|
42
|
+
|
|
43
|
+
No markdown headings (#, ##, ###) in skill body. Use semantic XML tags:
|
|
44
|
+
```xml
|
|
45
|
+
<objective>...</objective>
|
|
46
|
+
<process>...</process>
|
|
47
|
+
<success_criteria>...</success_criteria>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Keep markdown formatting within content (bold, lists, code blocks).
|
|
51
|
+
|
|
52
|
+
### 5. Progressive Disclosure
|
|
53
|
+
|
|
54
|
+
SKILL.md under 500 lines. Split detailed content into reference files. Load only what's needed for the current workflow.
|
|
55
|
+
</essential_principles>
|
|
56
|
+
|
|
57
|
+
<routing>
|
|
58
|
+
## Understanding User Intent
|
|
59
|
+
|
|
60
|
+
Based on the user's message, route directly to the appropriate workflow:
|
|
61
|
+
|
|
62
|
+
**Creating new skills:**
|
|
63
|
+
- Domain expertise (exhaustive knowledge base) → **Use `create-domain-expertise` skill instead** (separate skill with batched subagent orchestration)
|
|
64
|
+
- Task-execution skill (does specific things) → workflows/create-new-skill.md
|
|
65
|
+
|
|
66
|
+
**Working with existing skills:**
|
|
67
|
+
- Audit, review, check → workflows/audit-skill.md
|
|
68
|
+
- Verify content is current → workflows/verify-skill.md
|
|
69
|
+
- Add workflow → workflows/add-workflow.md
|
|
70
|
+
- Add reference → workflows/add-reference.md
|
|
71
|
+
- Add template → workflows/add-template.md
|
|
72
|
+
- Add script → workflows/add-script.md
|
|
73
|
+
- Upgrade to router pattern → workflows/upgrade-to-router.md
|
|
74
|
+
|
|
75
|
+
**Need help deciding:**
|
|
76
|
+
- General guidance → workflows/get-guidance.md
|
|
77
|
+
|
|
78
|
+
**If user intent is unclear, ask minimal clarifying questions:**
|
|
79
|
+
- "Create a MIDI skill" → "Task-execution skill (does MIDI tasks) or domain expertise (complete MIDI knowledge base)?"
|
|
80
|
+
- "Work on my skill" → "Which skill? What do you want to do with it?"
|
|
81
|
+
|
|
82
|
+
Then proceed directly to the workflow.
|
|
83
|
+
</routing>
|
|
84
|
+
|
|
85
|
+
<quick_reference>
|
|
86
|
+
## Skill Structure Quick Reference
|
|
87
|
+
|
|
88
|
+
**Skill directories:**
|
|
89
|
+
- Global: `~/.gsd/agent/skills/{skill-name}/`
|
|
90
|
+
- Project-local: `.pi/agent/skills/{skill-name}/`
|
|
91
|
+
|
|
92
|
+
**Simple skill (single file):**
|
|
93
|
+
```yaml
|
|
94
|
+
---
|
|
95
|
+
name: skill-name
|
|
96
|
+
description: What it does and when to use it.
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
<objective>What this skill does</objective>
|
|
100
|
+
<quick_start>Immediate actionable guidance</quick_start>
|
|
101
|
+
<process>Step-by-step procedure</process>
|
|
102
|
+
<success_criteria>How to know it worked</success_criteria>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Complex skill (router pattern):**
|
|
106
|
+
```
|
|
107
|
+
SKILL.md:
|
|
108
|
+
<essential_principles> - Always applies
|
|
109
|
+
<intake> - Question to ask
|
|
110
|
+
<routing> - Maps answers to workflows
|
|
111
|
+
|
|
112
|
+
workflows/:
|
|
113
|
+
<required_reading> - Which refs to load
|
|
114
|
+
<process> - Steps
|
|
115
|
+
<success_criteria> - Done when...
|
|
116
|
+
|
|
117
|
+
references/:
|
|
118
|
+
Domain knowledge, patterns, examples
|
|
119
|
+
|
|
120
|
+
templates/:
|
|
121
|
+
Output structures Claude copies and fills
|
|
122
|
+
(plans, specs, configs, documents)
|
|
123
|
+
|
|
124
|
+
scripts/:
|
|
125
|
+
Executable code Claude runs as-is
|
|
126
|
+
(deploy, setup, API calls, data processing)
|
|
127
|
+
```
|
|
128
|
+
</quick_reference>
|
|
129
|
+
|
|
130
|
+
<reference_index>
|
|
131
|
+
## Domain Knowledge
|
|
132
|
+
|
|
133
|
+
All in `references/`:
|
|
134
|
+
|
|
135
|
+
**Structure:** recommended-structure.md, skill-structure.md
|
|
136
|
+
**Principles:** core-principles.md, be-clear-and-direct.md, use-xml-tags.md
|
|
137
|
+
**Patterns:** common-patterns.md, workflows-and-validation.md
|
|
138
|
+
**Assets:** using-templates.md, using-scripts.md
|
|
139
|
+
**Advanced:** executable-code.md, api-security.md, iteration-and-testing.md
|
|
140
|
+
**GSD-specific:** gsd-skill-ecosystem.md
|
|
141
|
+
</reference_index>
|
|
142
|
+
|
|
143
|
+
<workflows_index>
|
|
144
|
+
## Workflows
|
|
145
|
+
|
|
146
|
+
All in `workflows/`:
|
|
147
|
+
|
|
148
|
+
| Workflow | Purpose |
|
|
149
|
+
|----------|---------|
|
|
150
|
+
| create-new-skill.md | Build a task-execution skill from scratch |
|
|
151
|
+
| audit-skill.md | Analyze skill against best practices |
|
|
152
|
+
| verify-skill.md | Check if content is still accurate |
|
|
153
|
+
| add-workflow.md | Add a workflow to existing skill |
|
|
154
|
+
| add-reference.md | Add a reference to existing skill |
|
|
155
|
+
| add-template.md | Add a template to existing skill |
|
|
156
|
+
| add-script.md | Add a script to existing skill |
|
|
157
|
+
| upgrade-to-router.md | Convert simple skill to router pattern |
|
|
158
|
+
| get-guidance.md | Help decide what kind of skill to build |
|
|
159
|
+
</workflows_index>
|
|
160
|
+
|
|
161
|
+
<yaml_requirements>
|
|
162
|
+
## YAML Frontmatter
|
|
163
|
+
|
|
164
|
+
Required fields:
|
|
165
|
+
```yaml
|
|
166
|
+
---
|
|
167
|
+
name: skill-name # lowercase-with-hyphens, matches directory
|
|
168
|
+
description: ... # What it does AND when to use it (third person)
|
|
169
|
+
---
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Name conventions: `create-*`, `manage-*`, `setup-*`, `generate-*`, `build-*`
|
|
173
|
+
</yaml_requirements>
|
|
174
|
+
|
|
175
|
+
<success_criteria>
|
|
176
|
+
A well-structured skill:
|
|
177
|
+
- Has valid YAML frontmatter
|
|
178
|
+
- Uses pure XML structure (no markdown headings in body)
|
|
179
|
+
- Has essential principles inline in SKILL.md
|
|
180
|
+
- Routes directly to appropriate workflows based on user intent
|
|
181
|
+
- Keeps SKILL.md under 500 lines
|
|
182
|
+
- Asks minimal clarifying questions only when truly needed
|
|
183
|
+
- Has been tested with real usage
|
|
184
|
+
</success_criteria>
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<overview>
|
|
2
|
+
When building skills that make API calls requiring credentials (API keys, tokens, secrets), follow this protocol to prevent credentials from appearing in chat.
|
|
3
|
+
</overview>
|
|
4
|
+
|
|
5
|
+
<the_problem>
|
|
6
|
+
Raw curl commands with environment variables expose credentials:
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
# ❌ BAD - API key visible in chat
|
|
10
|
+
curl -H "Authorization: Bearer $API_KEY" https://api.example.com/data
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
When Claude executes this, the full command with expanded `$API_KEY` appears in the conversation.
|
|
14
|
+
</the_problem>
|
|
15
|
+
|
|
16
|
+
<the_solution>
|
|
17
|
+
Use `~/.claude/scripts/secure-api.sh` - a wrapper that loads credentials internally.
|
|
18
|
+
|
|
19
|
+
<for_supported_services>
|
|
20
|
+
```bash
|
|
21
|
+
# ✅ GOOD - No credentials visible
|
|
22
|
+
~/.claude/scripts/secure-api.sh <service> <operation> [args]
|
|
23
|
+
|
|
24
|
+
# Examples:
|
|
25
|
+
~/.claude/scripts/secure-api.sh facebook list-campaigns
|
|
26
|
+
~/.claude/scripts/secure-api.sh ghl search-contact "email@example.com"
|
|
27
|
+
```
|
|
28
|
+
</for_supported_services>
|
|
29
|
+
|
|
30
|
+
<adding_new_services>
|
|
31
|
+
When building a new skill that requires API calls:
|
|
32
|
+
|
|
33
|
+
1. **Add operations to the wrapper** (`~/.claude/scripts/secure-api.sh`):
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
case "$SERVICE" in
|
|
37
|
+
yourservice)
|
|
38
|
+
case "$OPERATION" in
|
|
39
|
+
list-items)
|
|
40
|
+
curl -s -G \
|
|
41
|
+
-H "Authorization: Bearer $YOUR_API_KEY" \
|
|
42
|
+
"https://api.yourservice.com/items"
|
|
43
|
+
;;
|
|
44
|
+
get-item)
|
|
45
|
+
ITEM_ID=$1
|
|
46
|
+
curl -s -G \
|
|
47
|
+
-H "Authorization: Bearer $YOUR_API_KEY" \
|
|
48
|
+
"https://api.yourservice.com/items/$ITEM_ID"
|
|
49
|
+
;;
|
|
50
|
+
*)
|
|
51
|
+
echo "Unknown operation: $OPERATION" >&2
|
|
52
|
+
exit 1
|
|
53
|
+
;;
|
|
54
|
+
esac
|
|
55
|
+
;;
|
|
56
|
+
esac
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
2. **Add profile support to the wrapper** (if service needs multiple accounts):
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# In secure-api.sh, add to profile remapping section:
|
|
63
|
+
yourservice)
|
|
64
|
+
SERVICE_UPPER="YOURSERVICE"
|
|
65
|
+
YOURSERVICE_API_KEY=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_API_KEY)
|
|
66
|
+
YOURSERVICE_ACCOUNT_ID=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_ACCOUNT_ID)
|
|
67
|
+
;;
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
3. **Add credential placeholders to `~/.claude/.env`** using profile naming:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Check if entries already exist
|
|
74
|
+
grep -q "YOURSERVICE_MAIN_API_KEY=" ~/.claude/.env 2>/dev/null || \
|
|
75
|
+
echo -e "\n# Your Service - Main profile\nYOURSERVICE_MAIN_API_KEY=\nYOURSERVICE_MAIN_ACCOUNT_ID=" >> ~/.claude/.env
|
|
76
|
+
|
|
77
|
+
echo "Added credential placeholders to ~/.claude/.env - user needs to fill them in"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
4. **Document profile workflow in your SKILL.md**:
|
|
81
|
+
|
|
82
|
+
```markdown
|
|
83
|
+
## Profile Selection Workflow
|
|
84
|
+
|
|
85
|
+
**CRITICAL:** Always use profile selection to prevent using wrong account credentials.
|
|
86
|
+
|
|
87
|
+
### When user requests YourService operation:
|
|
88
|
+
|
|
89
|
+
1. **Check for saved profile:**
|
|
90
|
+
```bash
|
|
91
|
+
~/.claude/scripts/profile-state get yourservice
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
2. **If no profile saved, discover available profiles:**
|
|
95
|
+
```bash
|
|
96
|
+
~/.claude/scripts/list-profiles yourservice
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
3. **If only ONE profile:** Use it automatically and announce:
|
|
100
|
+
```
|
|
101
|
+
"Using YourService profile 'main' to list items..."
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
4. **If MULTIPLE profiles:** Ask user which one:
|
|
105
|
+
```
|
|
106
|
+
"Which YourService profile: main, clienta, or clientb?"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
5. **Save user's selection:**
|
|
110
|
+
```bash
|
|
111
|
+
~/.claude/scripts/profile-state set yourservice <selected_profile>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
6. **Always announce which profile before calling API:**
|
|
115
|
+
```
|
|
116
|
+
"Using YourService profile 'main' to list items..."
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
7. **Make API call with profile:**
|
|
120
|
+
```bash
|
|
121
|
+
~/.claude/scripts/secure-api.sh yourservice:<profile> list-items
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Secure API Calls
|
|
125
|
+
|
|
126
|
+
All API calls use profile syntax:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
~/.claude/scripts/secure-api.sh yourservice:<profile> <operation> [args]
|
|
130
|
+
|
|
131
|
+
# Examples:
|
|
132
|
+
~/.claude/scripts/secure-api.sh yourservice:main list-items
|
|
133
|
+
~/.claude/scripts/secure-api.sh yourservice:main get-item <ITEM_ID>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Profile persists for session:** Once selected, use same profile for subsequent operations unless user explicitly changes it.
|
|
137
|
+
```
|
|
138
|
+
</adding_new_services>
|
|
139
|
+
</the_solution>
|
|
140
|
+
|
|
141
|
+
<pattern_guidelines>
|
|
142
|
+
<simple_get_requests>
|
|
143
|
+
```bash
|
|
144
|
+
curl -s -G \
|
|
145
|
+
-H "Authorization: Bearer $API_KEY" \
|
|
146
|
+
"https://api.example.com/endpoint"
|
|
147
|
+
```
|
|
148
|
+
</simple_get_requests>
|
|
149
|
+
|
|
150
|
+
<post_with_json_body>
|
|
151
|
+
```bash
|
|
152
|
+
ITEM_ID=$1
|
|
153
|
+
curl -s -X POST \
|
|
154
|
+
-H "Authorization: Bearer $API_KEY" \
|
|
155
|
+
-H "Content-Type: application/json" \
|
|
156
|
+
-d @- \
|
|
157
|
+
"https://api.example.com/items/$ITEM_ID"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Usage:
|
|
161
|
+
```bash
|
|
162
|
+
echo '{"name":"value"}' | ~/.claude/scripts/secure-api.sh service create-item
|
|
163
|
+
```
|
|
164
|
+
</post_with_json_body>
|
|
165
|
+
|
|
166
|
+
<post_with_form_data>
|
|
167
|
+
```bash
|
|
168
|
+
curl -s -X POST \
|
|
169
|
+
-F "field1=value1" \
|
|
170
|
+
-F "field2=value2" \
|
|
171
|
+
-F "access_token=$API_TOKEN" \
|
|
172
|
+
"https://api.example.com/endpoint"
|
|
173
|
+
```
|
|
174
|
+
</post_with_form_data>
|
|
175
|
+
</pattern_guidelines>
|
|
176
|
+
|
|
177
|
+
<credential_storage>
|
|
178
|
+
**Location:** `~/.claude/.env` (global for all skills, accessible from any directory)
|
|
179
|
+
|
|
180
|
+
**Format:**
|
|
181
|
+
```bash
|
|
182
|
+
# Service credentials
|
|
183
|
+
SERVICE_API_KEY=your-key-here
|
|
184
|
+
SERVICE_ACCOUNT_ID=account-id-here
|
|
185
|
+
|
|
186
|
+
# Another service
|
|
187
|
+
OTHER_API_TOKEN=token-here
|
|
188
|
+
OTHER_BASE_URL=https://api.other.com
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Loading in script:**
|
|
192
|
+
```bash
|
|
193
|
+
set -a
|
|
194
|
+
source ~/.claude/.env 2>/dev/null || { echo "Error: ~/.claude/.env not found" >&2; exit 1; }
|
|
195
|
+
set +a
|
|
196
|
+
```
|
|
197
|
+
</credential_storage>
|
|
198
|
+
|
|
199
|
+
<best_practices>
|
|
200
|
+
1. **Never use raw curl with `$VARIABLE` in skill examples** - always use the wrapper
|
|
201
|
+
2. **Add all operations to the wrapper** - don't make users figure out curl syntax
|
|
202
|
+
3. **Auto-create credential placeholders** - add empty fields to `~/.claude/.env` immediately when creating the skill
|
|
203
|
+
4. **Keep credentials in `~/.claude/.env`** - one central location, works everywhere
|
|
204
|
+
5. **Document each operation** - show examples in SKILL.md
|
|
205
|
+
6. **Handle errors gracefully** - check for missing env vars, show helpful error messages
|
|
206
|
+
</best_practices>
|
|
207
|
+
|
|
208
|
+
<testing>
|
|
209
|
+
Test the wrapper without exposing credentials:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# This command appears in chat
|
|
213
|
+
~/.claude/scripts/secure-api.sh facebook list-campaigns
|
|
214
|
+
|
|
215
|
+
# But API keys never appear - they're loaded inside the script
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Verify credentials are loaded:
|
|
219
|
+
```bash
|
|
220
|
+
# Check .env exists
|
|
221
|
+
ls -la ~/.claude/.env
|
|
222
|
+
|
|
223
|
+
# Check specific variables (without showing values)
|
|
224
|
+
grep -q "YOUR_API_KEY=" ~/.claude/.env && echo "API key configured" || echo "API key missing"
|
|
225
|
+
```
|
|
226
|
+
</testing>
|