mindforge-cc 11.5.1 → 11.7.0
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/.agent/mindforge/skill-tdd.md +53 -0
- package/.agent/mindforge/skills-index.md +118 -0
- package/.agent/mindforge/systematic-debug.md +60 -0
- package/.agent/mindforge/wf-catalog.md +37 -0
- package/.agent/mindforge/wf-code-audit.md +31 -0
- package/.agent/mindforge/wf-competitive-analysis.md +31 -0
- package/.agent/mindforge/wf-deep-research.md +32 -0
- package/.agent/mindforge/wf-feature-planner.md +31 -0
- package/.agent/mindforge/wf-incident-response.md +31 -0
- package/.agent/mindforge/wf-onboard-codebase.md +31 -0
- package/.agent/mindforge/wf-perf-optimize.md +31 -0
- package/.agent/mindforge/wf-pr-review.md +31 -0
- package/.agent/mindforge/wf-refactor-plan.md +31 -0
- package/.agent/mindforge/wf-release-prep.md +31 -0
- package/.agent/mindforge/wf-tdd-sprint.md +31 -0
- package/.agent/mindforge/wf-tech-evaluation.md +31 -0
- package/.agent/skills/1password-skill/SKILL.md +156 -0
- package/.agent/skills/1password-skill/references/cli-examples.md +31 -0
- package/.agent/skills/1password-skill/references/get-started.md +21 -0
- package/.agent/skills/article-illustrator/SKILL.md +199 -0
- package/.agent/skills/article-illustrator/references/prompt-construction.md +426 -0
- package/.agent/skills/article-illustrator/references/style-presets.md +80 -0
- package/.agent/skills/article-illustrator/references/styles.md +224 -0
- package/.agent/skills/article-illustrator/references/usage.md +50 -0
- package/.agent/skills/article-illustrator/references/workflow.md +332 -0
- package/.agent/skills/arxiv/SKILL.md +275 -0
- package/.agent/skills/blogwatcher/SKILL.md +130 -0
- package/.agent/skills/code-wiki/SKILL.md +438 -0
- package/.agent/skills/code-wiki/templates/README.md +31 -0
- package/.agent/skills/code-wiki/templates/architecture.md +30 -0
- package/.agent/skills/code-wiki/templates/getting-started.md +47 -0
- package/.agent/skills/code-wiki/templates/module.md +38 -0
- package/.agent/skills/codebase-inspection/SKILL.md +109 -0
- package/.agent/skills/comic-creator/SKILL.md +240 -0
- package/.agent/skills/comic-creator/references/analysis-framework.md +176 -0
- package/.agent/skills/comic-creator/references/auto-selection.md +71 -0
- package/.agent/skills/comic-creator/references/base-prompt.md +98 -0
- package/.agent/skills/comic-creator/references/character-template.md +180 -0
- package/.agent/skills/comic-creator/references/ohmsha-guide.md +85 -0
- package/.agent/skills/comic-creator/references/partial-workflows.md +106 -0
- package/.agent/skills/comic-creator/references/storyboard-template.md +143 -0
- package/.agent/skills/comic-creator/references/workflow.md +401 -0
- package/.agent/skills/concept-diagrams/SKILL.md +355 -0
- package/.agent/skills/concept-diagrams/references/dashboard-patterns.md +43 -0
- package/.agent/skills/concept-diagrams/references/infrastructure-patterns.md +144 -0
- package/.agent/skills/concept-diagrams/references/physical-shape-cookbook.md +42 -0
- package/.agent/skills/creative-ideation/SKILL.md +144 -0
- package/.agent/skills/creative-ideation/references/full-prompt-library.md +110 -0
- package/.agent/skills/devops-cli/SKILL.md +149 -0
- package/.agent/skills/devops-cli/references/app-discovery.md +112 -0
- package/.agent/skills/devops-cli/references/authentication.md +59 -0
- package/.agent/skills/devops-cli/references/cli-reference.md +104 -0
- package/.agent/skills/devops-cli/references/running-apps.md +171 -0
- package/.agent/skills/devops-watchers/SKILL.md +103 -0
- package/.agent/skills/docker-management/SKILL.md +273 -0
- package/.agent/skills/domain-intel/SKILL.md +96 -0
- package/.agent/skills/duckduckgo-search/SKILL.md +230 -0
- package/.agent/skills/github-auth/SKILL.md +240 -0
- package/.agent/skills/github-code-review/SKILL.md +474 -0
- package/.agent/skills/github-code-review/references/review-output-template.md +74 -0
- package/.agent/skills/github-issues/SKILL.md +363 -0
- package/.agent/skills/github-issues/templates/bug-report.md +35 -0
- package/.agent/skills/github-issues/templates/feature-request.md +31 -0
- package/.agent/skills/github-pr-workflow/SKILL.md +360 -0
- package/.agent/skills/github-pr-workflow/references/ci-troubleshooting.md +183 -0
- package/.agent/skills/github-pr-workflow/references/conventional-commits.md +71 -0
- package/.agent/skills/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
- package/.agent/skills/github-pr-workflow/templates/pr-body-feature.md +33 -0
- package/.agent/skills/github-repo-management/SKILL.md +509 -0
- package/.agent/skills/github-repo-management/references/github-api-cheatsheet.md +161 -0
- package/.agent/skills/godmode/SKILL.md +396 -0
- package/.agent/skills/godmode/references/jailbreak-templates.md +128 -0
- package/.agent/skills/godmode/references/refusal-detection.md +142 -0
- package/.agent/skills/hyperframes/SKILL.md +182 -0
- package/.agent/skills/hyperframes/references/cli.md +185 -0
- package/.agent/skills/hyperframes/references/composition.md +129 -0
- package/.agent/skills/hyperframes/references/features.md +289 -0
- package/.agent/skills/hyperframes/references/gsap.md +136 -0
- package/.agent/skills/hyperframes/references/troubleshooting.md +137 -0
- package/.agent/skills/hyperframes/references/website-to-video.md +145 -0
- package/.agent/skills/jupyter-live-kernel/SKILL.md +160 -0
- package/.agent/skills/kanban-orchestrator/SKILL.md +209 -0
- package/.agent/skills/kanban-worker/SKILL.md +188 -0
- package/.agent/skills/llm-wiki/SKILL.md +499 -0
- package/.agent/skills/meme-generation/SKILL.md +122 -0
- package/.agent/skills/node-inspect-debugger/SKILL.md +312 -0
- package/.agent/skills/obsidian/SKILL.md +60 -0
- package/.agent/skills/osint-investigation/SKILL.md +269 -0
- package/.agent/skills/osint-investigation/templates/source-template.md +59 -0
- package/.agent/skills/oss-forensics/SKILL.md +422 -0
- package/.agent/skills/oss-forensics/references/evidence-types.md +89 -0
- package/.agent/skills/oss-forensics/references/github-archive-guide.md +184 -0
- package/.agent/skills/oss-forensics/references/investigation-templates.md +131 -0
- package/.agent/skills/oss-forensics/references/recovery-techniques.md +164 -0
- package/.agent/skills/oss-forensics/templates/forensic-report.md +151 -0
- package/.agent/skills/oss-forensics/templates/malicious-package-report.md +43 -0
- package/.agent/skills/parallel-cli/SKILL.md +384 -0
- package/.agent/skills/pinggy-tunnel/SKILL.md +302 -0
- package/.agent/skills/pixel-art/SKILL.md +209 -0
- package/.agent/skills/pixel-art/references/palettes.md +49 -0
- package/.agent/skills/plan/SKILL.md +331 -0
- package/.agent/skills/polymarket/SKILL.md +75 -0
- package/.agent/skills/polymarket/references/api-endpoints.md +220 -0
- package/.agent/skills/python-debugpy/SKILL.md +368 -0
- package/.agent/skills/requesting-code-review/SKILL.md +273 -0
- package/.agent/skills/research-paper-writing/SKILL.md +2367 -0
- package/.agent/skills/research-paper-writing/references/autoreason-methodology.md +394 -0
- package/.agent/skills/research-paper-writing/references/checklists.md +434 -0
- package/.agent/skills/research-paper-writing/references/citation-workflow.md +563 -0
- package/.agent/skills/research-paper-writing/references/experiment-patterns.md +728 -0
- package/.agent/skills/research-paper-writing/references/human-evaluation.md +476 -0
- package/.agent/skills/research-paper-writing/references/paper-types.md +481 -0
- package/.agent/skills/research-paper-writing/references/reviewer-guidelines.md +433 -0
- package/.agent/skills/research-paper-writing/references/sources.md +191 -0
- package/.agent/skills/research-paper-writing/references/writing-guide.md +474 -0
- package/.agent/skills/research-paper-writing/templates/README.md +251 -0
- package/.agent/skills/rest-graphql-debug/SKILL.md +507 -0
- package/.agent/skills/s6-container-supervision/SKILL.md +171 -0
- package/.agent/skills/scrapling/SKILL.md +328 -0
- package/.agent/skills/sherlock/SKILL.md +186 -0
- package/.agent/skills/simplify-code/SKILL.md +168 -0
- package/.agent/skills/skill-authoring/SKILL.md +158 -0
- package/.agent/skills/spike/SKILL.md +190 -0
- package/.agent/skills/subagent-driven-development/SKILL.md +345 -0
- package/.agent/skills/subagent-driven-development/references/context-budget-discipline.md +53 -0
- package/.agent/skills/subagent-driven-development/references/gates-taxonomy.md +93 -0
- package/.agent/skills/systematic-debugging/SKILL.md +360 -0
- package/.agent/skills/test-driven-development/SKILL.md +336 -0
- package/.agent/skills/video-orchestrator/SKILL.md +194 -0
- package/.agent/skills/video-orchestrator/references/examples.md +227 -0
- package/.agent/skills/video-orchestrator/references/intake.md +166 -0
- package/.agent/skills/video-orchestrator/references/kanban-setup.md +278 -0
- package/.agent/skills/video-orchestrator/references/monitoring.md +180 -0
- package/.agent/skills/video-orchestrator/references/role-archetypes.md +298 -0
- package/.agent/skills/video-orchestrator/references/tool-matrix.md +317 -0
- package/.agent/skills/web-pentest/SKILL.md +332 -0
- package/.agent/skills/web-pentest/references/bypass-techniques.md +133 -0
- package/.agent/skills/web-pentest/references/exploitation-techniques.md +204 -0
- package/.agent/skills/web-pentest/references/scope-enforcement.md +110 -0
- package/.agent/skills/web-pentest/references/vuln-taxonomy.md +81 -0
- package/.agent/skills/web-pentest/templates/authorization.md +69 -0
- package/.agent/skills/web-pentest/templates/pentest-report.md +178 -0
- package/.claude/commands/mindforge/skill-tdd.md +53 -0
- package/.claude/commands/mindforge/skills-index.md +118 -0
- package/.claude/commands/mindforge/systematic-debug.md +60 -0
- package/.claude/commands/mindforge/wf-catalog.md +37 -0
- package/.claude/commands/mindforge/wf-code-audit.md +31 -0
- package/.claude/commands/mindforge/wf-competitive-analysis.md +31 -0
- package/.claude/commands/mindforge/wf-deep-research.md +32 -0
- package/.claude/commands/mindforge/wf-feature-planner.md +31 -0
- package/.claude/commands/mindforge/wf-incident-response.md +31 -0
- package/.claude/commands/mindforge/wf-onboard-codebase.md +31 -0
- package/.claude/commands/mindforge/wf-perf-optimize.md +31 -0
- package/.claude/commands/mindforge/wf-pr-review.md +31 -0
- package/.claude/commands/mindforge/wf-refactor-plan.md +31 -0
- package/.claude/commands/mindforge/wf-release-prep.md +31 -0
- package/.claude/commands/mindforge/wf-tdd-sprint.md +31 -0
- package/.claude/commands/mindforge/wf-tech-evaluation.md +31 -0
- package/.mindforge/config.json +2 -2
- package/.mindforge/dynamic-workflows/REGISTRY.md +65 -0
- package/.mindforge/dynamic-workflows/index.json +171 -0
- package/.mindforge/dynamic-workflows/scripts/code-audit.js +103 -0
- package/.mindforge/dynamic-workflows/scripts/competitive-analysis.js +85 -0
- package/.mindforge/dynamic-workflows/scripts/deep-research.js +151 -0
- package/.mindforge/dynamic-workflows/scripts/feature-planner.js +104 -0
- package/.mindforge/dynamic-workflows/scripts/incident-response.js +106 -0
- package/.mindforge/dynamic-workflows/scripts/onboard-codebase.js +102 -0
- package/.mindforge/dynamic-workflows/scripts/perf-optimize.js +128 -0
- package/.mindforge/dynamic-workflows/scripts/pr-review.js +87 -0
- package/.mindforge/dynamic-workflows/scripts/refactor-plan.js +121 -0
- package/.mindforge/dynamic-workflows/scripts/release-prep.js +102 -0
- package/.mindforge/dynamic-workflows/scripts/tdd-sprint.js +103 -0
- package/.mindforge/dynamic-workflows/scripts/tech-evaluation.js +72 -0
- package/.mindforge/memory/sync-manifest.json +1 -1
- package/.mindforge/skills/arxiv/SKILL.md +294 -0
- package/.mindforge/skills/blogwatcher/SKILL.md +147 -0
- package/.mindforge/skills/code-wiki/SKILL.md +457 -0
- package/.mindforge/skills/codebase-inspection/SKILL.md +126 -0
- package/.mindforge/skills/concept-diagrams/SKILL.md +373 -0
- package/.mindforge/skills/creative-ideation/SKILL.md +162 -0
- package/.mindforge/skills/domain-intel/SKILL.md +116 -0
- package/.mindforge/skills/duckduckgo-search/SKILL.md +249 -0
- package/.mindforge/skills/github-code-review/SKILL.md +493 -0
- package/.mindforge/skills/github-issues/SKILL.md +382 -0
- package/.mindforge/skills/github-pr-workflow/SKILL.md +379 -0
- package/.mindforge/skills/jupyter-live-kernel/SKILL.md +179 -0
- package/.mindforge/skills/kanban-orchestrator/SKILL.md +227 -0
- package/.mindforge/skills/kanban-worker/SKILL.md +206 -0
- package/.mindforge/skills/meme-generation/SKILL.md +141 -0
- package/.mindforge/skills/obsidian/SKILL.md +80 -0
- package/.mindforge/skills/osint-investigation/SKILL.md +288 -0
- package/.mindforge/skills/oss-forensics/SKILL.md +421 -0
- package/.mindforge/skills/pixel-art/SKILL.md +228 -0
- package/.mindforge/skills/plan/SKILL.md +350 -0
- package/.mindforge/skills/requesting-code-review/SKILL.md +292 -0
- package/.mindforge/skills/research-paper-writing/SKILL.md +2384 -0
- package/.mindforge/skills/scrapling/SKILL.md +345 -0
- package/.mindforge/skills/sherlock/SKILL.md +203 -0
- package/.mindforge/skills/simplify-code/SKILL.md +187 -0
- package/.mindforge/skills/spike/SKILL.md +209 -0
- package/.mindforge/skills/subagent-driven-development/SKILL.md +364 -0
- package/.mindforge/skills/systematic-debugging/SKILL.md +379 -0
- package/.mindforge/skills/test-driven-development/SKILL.md +355 -0
- package/.mindforge/skills/web-pentest/SKILL.md +327 -0
- package/CHANGELOG.md +71 -0
- package/MINDFORGE.md +2 -2
- package/README.md +72 -3
- package/RELEASENOTES.md +109 -0
- package/bin/installer-core.js +6 -2
- package/bin/mindforge-cli.js +7 -0
- package/bin/workflows/workflow-runner.js +110 -0
- package/docs/commands-reference.md +25 -0
- package/docs/getting-started.md +42 -5
- package/package.json +2 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hermes-agent-skill-authoring
|
|
3
|
+
description: "Author in-repo SKILL.md: frontmatter, validator, structure."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Authoring
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
There are two places a SKILL.md can live:
|
|
12
|
+
|
|
13
|
+
1. **User-local:** `~/.agent/skills/<maybe-category>/<name>/SKILL.md` — personal, not shared. Created via `skill_manage(action='create')`.
|
|
14
|
+
2. **In-repo (this skill is about this case):** `/home/bb/
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
- User asks you to add a skill "in this branch / repo / commit"
|
|
19
|
+
- You're committing a reusable workflow that should ship with
|
|
20
|
+
- You're editing an existing skill under `/home/bb/
|
|
21
|
+
|
|
22
|
+
## Required Frontmatter
|
|
23
|
+
|
|
24
|
+
Source of truth: `tools/skill_manager_tool.py::_validate_frontmatter`. Hard requirements:
|
|
25
|
+
|
|
26
|
+
- Starts with `---` as the first bytes (no leading blank line).
|
|
27
|
+
- Closes with `\n---\n` before the body.
|
|
28
|
+
- Parses as a YAML mapping.
|
|
29
|
+
- `name` field present.
|
|
30
|
+
- `description` field present, ≤ **1024 chars** (`MAX_DESCRIPTION_LENGTH`).
|
|
31
|
+
- Non-empty body after the closing `---`.
|
|
32
|
+
|
|
33
|
+
Peer-matched shape used by every skill under `skills/software-development/`:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
---
|
|
37
|
+
name: my-skill-name # lowercase, hyphens, ≤64 chars (MAX_NAME_LENGTH)
|
|
38
|
+
description: Use when <trigger>. <one-line behavior>.
|
|
39
|
+
version: 1.0.0
|
|
40
|
+
author:
|
|
41
|
+
license: MIT
|
|
42
|
+
metadata:
|
|
43
|
+
hermes:
|
|
44
|
+
tags: [short, descriptive, tags]
|
|
45
|
+
related_skills: [other-skill, another-skill]
|
|
46
|
+
---
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`version` / `author` / `license` / `metadata` are NOT enforced by the validator, but every peer has them — omit and your skill sticks out.
|
|
50
|
+
|
|
51
|
+
## Size Limits
|
|
52
|
+
|
|
53
|
+
- Description: ≤ 1024 chars (enforced).
|
|
54
|
+
- Full SKILL.md: ≤ 100,000 chars (enforced as `MAX_SKILL_CONTENT_CHARS`, ~36k tokens).
|
|
55
|
+
- Peer skills in `software-development/` sit at **8-14k chars**. Aim for that range. If you're pushing past 20k, split into `references/*.md` and reference them from SKILL.md.
|
|
56
|
+
|
|
57
|
+
## Peer-Matched Structure
|
|
58
|
+
|
|
59
|
+
Every in-repo skill follows roughly:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
# <Title>
|
|
63
|
+
|
|
64
|
+
## Overview
|
|
65
|
+
One or two paragraphs: what and why.
|
|
66
|
+
|
|
67
|
+
## When to Use
|
|
68
|
+
- Bulleted triggers
|
|
69
|
+
- "Don't use for:" counter-triggers
|
|
70
|
+
|
|
71
|
+
## <Topic sections specific to the skill>
|
|
72
|
+
- Quick-reference tables are common
|
|
73
|
+
- Code blocks with exact commands
|
|
74
|
+
- the agent-specific recipes (tests via scripts/run_tests.sh, ui-tui paths, etc.)
|
|
75
|
+
|
|
76
|
+
## Common Pitfalls
|
|
77
|
+
Numbered list of mistakes and their fixes.
|
|
78
|
+
|
|
79
|
+
## Verification Checklist
|
|
80
|
+
- [ ] Checkbox list of post-action verifications
|
|
81
|
+
|
|
82
|
+
## One-Shot Recipes (optional)
|
|
83
|
+
Named scenarios → concrete command sequences.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Not every section is mandatory, but `Overview` + `When to Use` + actionable body + pitfalls are the minimum for the skill to feel like a peer.
|
|
87
|
+
|
|
88
|
+
## Directory Placement
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
skills/<category>/<skill-name>/SKILL.md
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Categories currently in repo (confirm with `ls skills/`): `autonomous-ai-agents`, `creative`, `data-science`, `devops`, `dogfood`, `email`, `gaming`, `github`, `leisure`, `mcp`, `media`, `mlops/*`, `note-taking`, `productivity`, `red-teaming`, `research`, `smart-home`, `social-media`, `software-development`.
|
|
95
|
+
|
|
96
|
+
Pick the closest existing category. Don't invent new top-level categories casually.
|
|
97
|
+
|
|
98
|
+
## Workflow
|
|
99
|
+
|
|
100
|
+
1. **Survey peers** in the target category:
|
|
101
|
+
```
|
|
102
|
+
ls skills/<category>/
|
|
103
|
+
```
|
|
104
|
+
Read 2-3 peer SKILL.md files to match tone and structure.
|
|
105
|
+
2. **Check validator constraints** in `tools/skill_manager_tool.py` if unsure.
|
|
106
|
+
3. **Draft** with `write_file` to `skills/<category>/<name>/SKILL.md`.
|
|
107
|
+
4. **Validate locally**:
|
|
108
|
+
```python
|
|
109
|
+
import yaml, re, pathlib
|
|
110
|
+
content = pathlib.Path("skills/<category>/<name>/SKILL.md").read_text()
|
|
111
|
+
assert content.startswith("---")
|
|
112
|
+
m = re.search(r'\n---\s*\n', content[3:])
|
|
113
|
+
fm = yaml.safe_load(content[3:m.start()+3])
|
|
114
|
+
assert "name" in fm and "description" in fm
|
|
115
|
+
assert len(fm["description"]) <= 1024
|
|
116
|
+
assert len(content) <= 100_000
|
|
117
|
+
```
|
|
118
|
+
5. **Git add + commit** on the active branch.
|
|
119
|
+
6. **Note:** the CURRENT session's skill loader is cached — `skill_view` / `skills_list` will not see the new skill until a new session. This is expected, not a bug.
|
|
120
|
+
|
|
121
|
+
## Cross-Referencing Other Skills
|
|
122
|
+
|
|
123
|
+
`metadata.hermes.related_skills` unions both trees (`skills/` in-repo and `~/.agent/skills/`) at load time. You CAN reference a user-local skill from an in-repo skill, but it won't resolve for other users who clone the repo fresh. Prefer referencing only in-repo skills from in-repo skills. If a frequently-referenced skill lives only in `~/.agent/skills/`, consider promoting it to the repo.
|
|
124
|
+
|
|
125
|
+
## Editing Existing In-Repo Skills
|
|
126
|
+
|
|
127
|
+
- **Small fix (typo, added pitfall, tightened trigger):** `skill_manage(action='patch', name=..., old_string=..., new_string=...)` works fine on in-repo skills.
|
|
128
|
+
- **Major rewrite:** `write_file` the whole SKILL.md. `skill_manage(action='edit')` also works but requires supplying the full new content.
|
|
129
|
+
- **Adding supporting files:** `write_file` to `skills/<category>/<name>/references/<file>.md`, `templates/<file>`, or `scripts/<file>`. `skill_manage(action='write_file')` also works and enforces the references/templates/scripts/assets subdir allowlist.
|
|
130
|
+
- **Always commit** the edit — in-repo skills are source, not runtime state.
|
|
131
|
+
|
|
132
|
+
## Common Pitfalls
|
|
133
|
+
|
|
134
|
+
1. **Using `skill_manage(action='create')` for an in-repo skill.** It writes to `~/.agent/skills/`, not the repo tree. Use `write_file` for in-repo creation.
|
|
135
|
+
|
|
136
|
+
2. **Leading whitespace before `---`.** The validator checks `content.startswith("---")`; any leading blank line or BOM fails validation.
|
|
137
|
+
|
|
138
|
+
3. **Description too generic.** Peer descriptions start with "Use when ..." and describe the *trigger class*, not the one task. "Use when debugging X" > "Debug X".
|
|
139
|
+
|
|
140
|
+
4. **Forgetting the author/license/metadata block.** Not validator-enforced, but every peer has it; omitting makes the skill look half-finished.
|
|
141
|
+
|
|
142
|
+
5. **Writing a skill that duplicates a peer.** Before creating, `ls skills/<category>/` and open 2-3 peers. Prefer extending an existing skill to creating a narrow sibling.
|
|
143
|
+
|
|
144
|
+
6. **Expecting the current session to see the new skill.** It won't. The skill loader is initialized at session start. Verify in a fresh session or via `skill_view` using the exact path.
|
|
145
|
+
|
|
146
|
+
7. **Linking to skills that don't exist in-repo.** `related_skills: [some-user-local-skill]` works for you but breaks for other clones. Prefer only in-repo links.
|
|
147
|
+
|
|
148
|
+
## Verification Checklist
|
|
149
|
+
|
|
150
|
+
- [ ] File is at `skills/<category>/<name>/SKILL.md` (not in `~/.agent/skills/`)
|
|
151
|
+
- [ ] Frontmatter starts at byte 0 with `---`, closes with `\n---\n`
|
|
152
|
+
- [ ] `name`, `description`, `version`, `author`, `license`, `metadata.hermes.{tags, related_skills}` all present
|
|
153
|
+
- [ ] Name ≤ 64 chars, lowercase + hyphens
|
|
154
|
+
- [ ] Description ≤ 1024 chars and starts with "Use when ..."
|
|
155
|
+
- [ ] Total file ≤ 100,000 chars (aim for 8-15k)
|
|
156
|
+
- [ ] Structure: `# Title` → `## Overview` → `## When to Use` → body → `## Common Pitfalls` → `## Verification Checklist`
|
|
157
|
+
- [ ] `related_skills` references resolve in-repo (or are explicitly OK to be user-local)
|
|
158
|
+
- [ ] `git add skills/<category>/<name>/ && git commit` completed on the intended branch
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spike
|
|
3
|
+
description: "Throwaway experiments to validate an idea before build."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Spike
|
|
8
|
+
|
|
9
|
+
Use this skill when the user wants to **feel out an idea** before committing to a real build — validating feasibility, comparing approaches, or surfacing unknowns that no amount of research will answer. Spikes are disposable by design. Throw them away once they've paid their debt.
|
|
10
|
+
|
|
11
|
+
Load this when the user says things like "let me try this", "I want to see if X works", "spike this out", "before I commit to Y", "quick prototype of Z", "is this even possible?", or "compare A vs B".
|
|
12
|
+
|
|
13
|
+
## When NOT to use this
|
|
14
|
+
|
|
15
|
+
- The answer is knowable from docs or reading code — just do research, don't build
|
|
16
|
+
- The work is production path — use the `plan` skill instead
|
|
17
|
+
- The idea is already validated — jump straight to implementation
|
|
18
|
+
|
|
19
|
+
## If the user has the full GSD system installed
|
|
20
|
+
|
|
21
|
+
If `gsd-spike` shows up as a sibling skill (installed via `npx get-shit-done-cc --hermes`), prefer **`gsd-spike`** when the user wants the full GSD workflow: persistent `.planning/spikes/` state, MANIFEST tracking across sessions, Given/When/Then verdict format, and commit patterns that integrate with the rest of GSD. This skill is the lightweight standalone version for users who don't have (or don't want) the full system.
|
|
22
|
+
|
|
23
|
+
## Core method
|
|
24
|
+
|
|
25
|
+
Regardless of scale, every spike follows this loop:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
decompose → research → build → verdict
|
|
29
|
+
↑__________________________________________↓
|
|
30
|
+
iterate on findings
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 1. Decompose
|
|
34
|
+
|
|
35
|
+
Break the user's idea into **2-5 independent feasibility questions**. Each question is one spike. Present them as a table with Given/When/Then framing:
|
|
36
|
+
|
|
37
|
+
| # | Spike | Validates (Given/When/Then) | Risk |
|
|
38
|
+
|---|-------|----------------------------|------|
|
|
39
|
+
| 001 | websocket-streaming | Given a WS connection, when LLM streams tokens, then client receives chunks < 100ms | High |
|
|
40
|
+
| 002a | pdf-parse-pdfjs | Given a multi-page PDF, when parsed with pdfjs, then structured text is extractable | Medium |
|
|
41
|
+
| 002b | pdf-parse-camelot | Given a multi-page PDF, when parsed with camelot, then structured text is extractable | Medium |
|
|
42
|
+
|
|
43
|
+
**Spike types:**
|
|
44
|
+
- **standard** — one approach answering one question
|
|
45
|
+
- **comparison** — same question, different approaches (shared number, letter suffix `a`/`b`/`c`)
|
|
46
|
+
|
|
47
|
+
**Good spike questions:** specific feasibility with observable output.
|
|
48
|
+
**Bad spike questions:** too broad, no observable output, or just "read the docs about X".
|
|
49
|
+
|
|
50
|
+
**Order by risk.** The spike most likely to kill the idea runs first. No point prototyping the easy parts if the hard part doesn't work.
|
|
51
|
+
|
|
52
|
+
**Skip decomposition** only if the user already knows exactly what they want to spike and says so. Then take their idea as a single spike.
|
|
53
|
+
|
|
54
|
+
### 2. Align (for multi-spike ideas)
|
|
55
|
+
|
|
56
|
+
Present the spike table. Ask: "Build all in this order, or adjust?" Let the user drop, reorder, or re-frame before you write any code.
|
|
57
|
+
|
|
58
|
+
### 3. Research (per spike, before building)
|
|
59
|
+
|
|
60
|
+
Spikes are not research-free — you research enough to pick the right approach, then you build. Per spike:
|
|
61
|
+
|
|
62
|
+
1. **Brief it.** 2-3 sentences: what this spike is, why it matters, key risk.
|
|
63
|
+
2. **Surface competing approaches** if there's real choice:
|
|
64
|
+
|
|
65
|
+
| Approach | Tool/Library | Pros | Cons | Status |
|
|
66
|
+
|----------|-------------|------|------|--------|
|
|
67
|
+
| ... | ... | ... | ... | maintained / abandoned / beta |
|
|
68
|
+
|
|
69
|
+
3. **Pick one.** State why. If 2+ are credible, build quick variants within the spike.
|
|
70
|
+
4. **Skip research** for pure logic with no external dependencies.
|
|
71
|
+
|
|
72
|
+
Use tools for the research step:
|
|
73
|
+
|
|
74
|
+
- `web_search("python websocket streaming libraries 2025")` — find candidates
|
|
75
|
+
- `web_extract(urls=["https://websockets.readthedocs.io/..."])` — read the actual docs (returns markdown)
|
|
76
|
+
- `terminal("pip show websockets | grep Version")` — check what's installed in the project's venv
|
|
77
|
+
|
|
78
|
+
For libraries without docs pages, clone and read their `README.md` / `examples/` via `read_file`. Context7 MCP (if the user has it configured) is also a good source — `mcp_*_resolve-library-id` then `mcp_*_query-docs`.
|
|
79
|
+
|
|
80
|
+
### 4. Build
|
|
81
|
+
|
|
82
|
+
One directory per spike. Keep it standalone.
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
spikes/
|
|
86
|
+
├── 001-websocket-streaming/
|
|
87
|
+
│ ├── README.md
|
|
88
|
+
│ └── main.py
|
|
89
|
+
├── 002a-pdf-parse-pdfjs/
|
|
90
|
+
│ ├── README.md
|
|
91
|
+
│ └── parse.js
|
|
92
|
+
└── 002b-pdf-parse-camelot/
|
|
93
|
+
├── README.md
|
|
94
|
+
└── parse.py
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Bias toward something the user can interact with.** Spikes fail when the only output is a log line that says "it works." The user wants to *feel* the spike working. Default choices, in order of preference:
|
|
98
|
+
|
|
99
|
+
1. A runnable CLI that takes input and prints observable output
|
|
100
|
+
2. A minimal HTML page that demonstrates the behavior
|
|
101
|
+
3. A small web server with one endpoint
|
|
102
|
+
4. A unit test that exercises the question with recognizable assertions
|
|
103
|
+
|
|
104
|
+
**Depth over speed.** Never declare "it works" after one happy-path run. Test edge cases. Follow surprising findings. The verdict is only trustworthy when the investigation was honest.
|
|
105
|
+
|
|
106
|
+
**Avoid** unless the spike specifically requires it: complex package management, build tools/bundlers, Docker, env files, config systems. Hardcode everything — it's a spike.
|
|
107
|
+
|
|
108
|
+
**Building one spike** — a typical tool sequence:
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
terminal("mkdir -p spikes/001-websocket-streaming")
|
|
112
|
+
write_file("spikes/001-websocket-streaming/README.md", "# 001: websocket-streaming\n\n...")
|
|
113
|
+
write_file("spikes/001-websocket-streaming/main.py", "...")
|
|
114
|
+
terminal("cd spikes/001-websocket-streaming && python3 main.py")
|
|
115
|
+
# Observe output, iterate.
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Parallel comparison spikes (002a / 002b) — delegate.** When two approaches can run in parallel and both need real engineering (not 10-line prototypes), fan out with `delegate_task`:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
delegate_task(tasks=[
|
|
122
|
+
{"goal": "Build 002a-pdf-parse-pdfjs: ...", "toolsets": ["terminal", "file", "web"]},
|
|
123
|
+
{"goal": "Build 002b-pdf-parse-camelot: ...", "toolsets": ["terminal", "file", "web"]},
|
|
124
|
+
])
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Each subagent returns its own verdict; you write the head-to-head.
|
|
128
|
+
|
|
129
|
+
### 5. Verdict
|
|
130
|
+
|
|
131
|
+
Each spike's `README.md` closes with:
|
|
132
|
+
|
|
133
|
+
```markdown
|
|
134
|
+
## Verdict: VALIDATED | PARTIAL | INVALIDATED
|
|
135
|
+
|
|
136
|
+
### What worked
|
|
137
|
+
- ...
|
|
138
|
+
|
|
139
|
+
### What didn't
|
|
140
|
+
- ...
|
|
141
|
+
|
|
142
|
+
### Surprises
|
|
143
|
+
- ...
|
|
144
|
+
|
|
145
|
+
### Recommendation for the real build
|
|
146
|
+
- ...
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**VALIDATED** = the core question was answered yes, with evidence.
|
|
150
|
+
**PARTIAL** = it works under constraints X, Y, Z — document them.
|
|
151
|
+
**INVALIDATED** = doesn't work, for this reason. This is a successful spike.
|
|
152
|
+
|
|
153
|
+
## Comparison spikes
|
|
154
|
+
|
|
155
|
+
When two approaches answer the same question (002a / 002b), build them **back to back**, then do a head-to-head comparison at the end:
|
|
156
|
+
|
|
157
|
+
```markdown
|
|
158
|
+
## Head-to-head: pdfjs vs camelot
|
|
159
|
+
|
|
160
|
+
| Dimension | pdfjs (002a) | camelot (002b) |
|
|
161
|
+
|-----------|--------------|----------------|
|
|
162
|
+
| Extraction quality | 9/10 structured | 7/10 table-only |
|
|
163
|
+
| Setup complexity | npm install, 1 line | pip + ghostscript |
|
|
164
|
+
| Perf on 100-page PDF | 3s | 18s |
|
|
165
|
+
| Handles rotated text | no | yes |
|
|
166
|
+
|
|
167
|
+
**Winner:** pdfjs for our use case. Camelot if we need table-first extraction later.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Frontier mode (picking what to spike next)
|
|
171
|
+
|
|
172
|
+
If spikes already exist and the user says "what should I spike next?", walk the existing directories and look for:
|
|
173
|
+
|
|
174
|
+
- **Integration risks** — two validated spikes that touch the same resource but were tested independently
|
|
175
|
+
- **Data handoffs** — spike A's output was assumed compatible with spike B's input; never proven
|
|
176
|
+
- **Gaps in the vision** — capabilities assumed but unproven
|
|
177
|
+
- **Alternative approaches** — different angles for PARTIAL or INVALIDATED spikes
|
|
178
|
+
|
|
179
|
+
Propose 2-4 candidates as Given/When/Then. Let the user pick.
|
|
180
|
+
|
|
181
|
+
## Output
|
|
182
|
+
|
|
183
|
+
- Create `spikes/` (or `.planning/spikes/` if the user is using GSD conventions) in the repo root
|
|
184
|
+
- One dir per spike: `NNN-descriptive-name/`
|
|
185
|
+
- `README.md` per spike captures question, approach, results, verdict
|
|
186
|
+
- Keep the code throwaway — a spike that takes 2 days to "clean up for production" was a bad spike
|
|
187
|
+
|
|
188
|
+
## Attribution
|
|
189
|
+
|
|
190
|
+
Adapted from the GSD (Get Shit Done) project's `/gsd-spike` workflow — MIT © 2025 Lex Christopherson ([gsd-build/get-shit-done](https://github.com/gsd-build/get-shit-done)). The full GSD system offers persistent spike state, MANIFEST tracking, and integration with a broader spec-driven development pipeline; install with `npx get-shit-done-cc --hermes --global`.
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: subagent-driven-development
|
|
3
|
+
description: "Execute plans via delegate_task subagents (2-stage review)."
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Subagent-Driven Development
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Execute implementation plans by dispatching fresh subagents per task with systematic two-stage review.
|
|
12
|
+
|
|
13
|
+
**Core principle:** Fresh subagent per task + two-stage review (spec then quality) = high quality, fast iteration.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
Use this skill when:
|
|
18
|
+
- You have an implementation plan (from the `plan` skill or user requirements)
|
|
19
|
+
- Tasks are mostly independent
|
|
20
|
+
- Quality and spec compliance are important
|
|
21
|
+
- You want automated review between tasks
|
|
22
|
+
|
|
23
|
+
**vs. manual execution:**
|
|
24
|
+
- Fresh context per task (no confusion from accumulated state)
|
|
25
|
+
- Automated review process catches issues early
|
|
26
|
+
- Consistent quality checks across all tasks
|
|
27
|
+
- Subagents can ask questions before starting work
|
|
28
|
+
|
|
29
|
+
## The Process
|
|
30
|
+
|
|
31
|
+
### 1. Read and Parse Plan
|
|
32
|
+
|
|
33
|
+
Read the plan file. Extract ALL tasks with their full text and context upfront. Create a todo list:
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
# Read the plan
|
|
37
|
+
read_file("docs/plans/feature-plan.md")
|
|
38
|
+
|
|
39
|
+
# Create todo list with all tasks
|
|
40
|
+
todo([
|
|
41
|
+
{"id": "task-1", "content": "Create User model with email field", "status": "pending"},
|
|
42
|
+
{"id": "task-2", "content": "Add password hashing utility", "status": "pending"},
|
|
43
|
+
{"id": "task-3", "content": "Create login endpoint", "status": "pending"},
|
|
44
|
+
])
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Key:** Read the plan ONCE. Extract everything. Don't make subagents read the plan file — provide the full task text directly in context.
|
|
48
|
+
|
|
49
|
+
### 2. Per-Task Workflow
|
|
50
|
+
|
|
51
|
+
For EACH task in the plan:
|
|
52
|
+
|
|
53
|
+
#### Step 1: Dispatch Implementer Subagent
|
|
54
|
+
|
|
55
|
+
Use `delegate_task` with complete context:
|
|
56
|
+
|
|
57
|
+
```python
|
|
58
|
+
delegate_task(
|
|
59
|
+
goal="Implement Task 1: Create User model with email and password_hash fields",
|
|
60
|
+
context="""
|
|
61
|
+
TASK FROM PLAN:
|
|
62
|
+
- Create: src/models/user.py
|
|
63
|
+
- Add User class with email (str) and password_hash (str) fields
|
|
64
|
+
- Use bcrypt for password hashing
|
|
65
|
+
- Include __repr__ for debugging
|
|
66
|
+
|
|
67
|
+
FOLLOW TDD:
|
|
68
|
+
1. Write failing test in tests/models/test_user.py
|
|
69
|
+
2. Run: pytest tests/models/test_user.py -v (verify FAIL)
|
|
70
|
+
3. Write minimal implementation
|
|
71
|
+
4. Run: pytest tests/models/test_user.py -v (verify PASS)
|
|
72
|
+
5. Run: pytest tests/ -q (verify no regressions)
|
|
73
|
+
6. Commit: git add -A && git commit -m "feat: add User model with password hashing"
|
|
74
|
+
|
|
75
|
+
PROJECT CONTEXT:
|
|
76
|
+
- Python 3.11, Flask app in src/app.py
|
|
77
|
+
- Existing models in src/models/
|
|
78
|
+
- Tests use pytest, run from project root
|
|
79
|
+
- bcrypt already in requirements.txt
|
|
80
|
+
""",
|
|
81
|
+
toolsets=['terminal', 'file']
|
|
82
|
+
)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### Step 2: Dispatch Spec Compliance Reviewer
|
|
86
|
+
|
|
87
|
+
After the implementer completes, verify against the original spec:
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
delegate_task(
|
|
91
|
+
goal="Review if implementation matches the spec from the plan",
|
|
92
|
+
context="""
|
|
93
|
+
ORIGINAL TASK SPEC:
|
|
94
|
+
- Create src/models/user.py with User class
|
|
95
|
+
- Fields: email (str), password_hash (str)
|
|
96
|
+
- Use bcrypt for password hashing
|
|
97
|
+
- Include __repr__
|
|
98
|
+
|
|
99
|
+
CHECK:
|
|
100
|
+
- [ ] All requirements from spec implemented?
|
|
101
|
+
- [ ] File paths match spec?
|
|
102
|
+
- [ ] Function signatures match spec?
|
|
103
|
+
- [ ] Behavior matches expected?
|
|
104
|
+
- [ ] Nothing extra added (no scope creep)?
|
|
105
|
+
|
|
106
|
+
OUTPUT: PASS or list of specific spec gaps to fix.
|
|
107
|
+
""",
|
|
108
|
+
toolsets=['file']
|
|
109
|
+
)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**If spec issues found:** Fix gaps, then re-run spec review. Continue only when spec-compliant.
|
|
113
|
+
|
|
114
|
+
#### Step 3: Dispatch Code Quality Reviewer
|
|
115
|
+
|
|
116
|
+
After spec compliance passes:
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
delegate_task(
|
|
120
|
+
goal="Review code quality for Task 1 implementation",
|
|
121
|
+
context="""
|
|
122
|
+
FILES TO REVIEW:
|
|
123
|
+
- src/models/user.py
|
|
124
|
+
- tests/models/test_user.py
|
|
125
|
+
|
|
126
|
+
CHECK:
|
|
127
|
+
- [ ] Follows project conventions and style?
|
|
128
|
+
- [ ] Proper error handling?
|
|
129
|
+
- [ ] Clear variable/function names?
|
|
130
|
+
- [ ] Adequate test coverage?
|
|
131
|
+
- [ ] No obvious bugs or missed edge cases?
|
|
132
|
+
- [ ] No security issues?
|
|
133
|
+
|
|
134
|
+
OUTPUT FORMAT:
|
|
135
|
+
- Critical Issues: [must fix before proceeding]
|
|
136
|
+
- Important Issues: [should fix]
|
|
137
|
+
- Minor Issues: [optional]
|
|
138
|
+
- Verdict: APPROVED or REQUEST_CHANGES
|
|
139
|
+
""",
|
|
140
|
+
toolsets=['file']
|
|
141
|
+
)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**If quality issues found:** Fix issues, re-review. Continue only when approved.
|
|
145
|
+
|
|
146
|
+
#### Step 4: Mark Complete
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
todo([{"id": "task-1", "content": "Create User model with email field", "status": "completed"}], merge=True)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 3. Final Review
|
|
153
|
+
|
|
154
|
+
After ALL tasks are complete, dispatch a final integration reviewer:
|
|
155
|
+
|
|
156
|
+
```python
|
|
157
|
+
delegate_task(
|
|
158
|
+
goal="Review the entire implementation for consistency and integration issues",
|
|
159
|
+
context="""
|
|
160
|
+
All tasks from the plan are complete. Review the full implementation:
|
|
161
|
+
- Do all components work together?
|
|
162
|
+
- Any inconsistencies between tasks?
|
|
163
|
+
- All tests passing?
|
|
164
|
+
- Ready for merge?
|
|
165
|
+
""",
|
|
166
|
+
toolsets=['terminal', 'file']
|
|
167
|
+
)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 4. Verify and Commit
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Run full test suite
|
|
174
|
+
pytest tests/ -q
|
|
175
|
+
|
|
176
|
+
# Review all changes
|
|
177
|
+
git diff --stat
|
|
178
|
+
|
|
179
|
+
# Final commit if needed
|
|
180
|
+
git add -A && git commit -m "feat: complete [feature name] implementation"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Task Granularity
|
|
184
|
+
|
|
185
|
+
**Each task = 2-5 minutes of focused work.**
|
|
186
|
+
|
|
187
|
+
**Too big:**
|
|
188
|
+
- "Implement user authentication system"
|
|
189
|
+
|
|
190
|
+
**Right size:**
|
|
191
|
+
- "Create User model with email and password fields"
|
|
192
|
+
- "Add password hashing function"
|
|
193
|
+
- "Create login endpoint"
|
|
194
|
+
- "Add JWT token generation"
|
|
195
|
+
- "Create registration endpoint"
|
|
196
|
+
|
|
197
|
+
## Red Flags — Never Do These
|
|
198
|
+
|
|
199
|
+
- Start implementation without a plan
|
|
200
|
+
- Skip reviews (spec compliance OR code quality)
|
|
201
|
+
- Proceed with unfixed critical/important issues
|
|
202
|
+
- Dispatch multiple implementation subagents for tasks that touch the same files
|
|
203
|
+
- Make subagent read the plan file (provide full text in context instead)
|
|
204
|
+
- Skip scene-setting context (subagent needs to understand where the task fits)
|
|
205
|
+
- Ignore subagent questions (answer before letting them proceed)
|
|
206
|
+
- Accept "close enough" on spec compliance
|
|
207
|
+
- Skip review loops (reviewer found issues → implementer fixes → review again)
|
|
208
|
+
- Let implementer self-review replace actual review (both are needed)
|
|
209
|
+
- **Start code quality review before spec compliance is PASS** (wrong order)
|
|
210
|
+
- Move to next task while either review has open issues
|
|
211
|
+
|
|
212
|
+
## Handling Issues
|
|
213
|
+
|
|
214
|
+
### If Subagent Asks Questions
|
|
215
|
+
|
|
216
|
+
- Answer clearly and completely
|
|
217
|
+
- Provide additional context if needed
|
|
218
|
+
- Don't rush them into implementation
|
|
219
|
+
|
|
220
|
+
### If Reviewer Finds Issues
|
|
221
|
+
|
|
222
|
+
- Implementer subagent (or a new one) fixes them
|
|
223
|
+
- Reviewer reviews again
|
|
224
|
+
- Repeat until approved
|
|
225
|
+
- Don't skip the re-review
|
|
226
|
+
|
|
227
|
+
### If Subagent Fails a Task
|
|
228
|
+
|
|
229
|
+
- Dispatch a new fix subagent with specific instructions about what went wrong
|
|
230
|
+
- Don't try to fix manually in the controller session (context pollution)
|
|
231
|
+
|
|
232
|
+
## Efficiency Notes
|
|
233
|
+
|
|
234
|
+
**Why fresh subagent per task:**
|
|
235
|
+
- Prevents context pollution from accumulated state
|
|
236
|
+
- Each subagent gets clean, focused context
|
|
237
|
+
- No confusion from prior tasks' code or reasoning
|
|
238
|
+
|
|
239
|
+
**Why two-stage review:**
|
|
240
|
+
- Spec review catches under/over-building early
|
|
241
|
+
- Quality review ensures the implementation is well-built
|
|
242
|
+
- Catches issues before they compound across tasks
|
|
243
|
+
|
|
244
|
+
**Cost trade-off:**
|
|
245
|
+
- More subagent invocations (implementer + 2 reviewers per task)
|
|
246
|
+
- But catches issues early (cheaper than debugging compounded problems later)
|
|
247
|
+
|
|
248
|
+
## Integration with Other Skills
|
|
249
|
+
|
|
250
|
+
### With plan
|
|
251
|
+
|
|
252
|
+
This skill EXECUTES plans created by the `plan` skill:
|
|
253
|
+
1. User requirements → plan → implementation plan
|
|
254
|
+
2. Implementation plan → subagent-driven-development → working code
|
|
255
|
+
|
|
256
|
+
### With test-driven-development
|
|
257
|
+
|
|
258
|
+
Implementer subagents should follow TDD:
|
|
259
|
+
1. Write failing test first
|
|
260
|
+
2. Implement minimal code
|
|
261
|
+
3. Verify test passes
|
|
262
|
+
4. Commit
|
|
263
|
+
|
|
264
|
+
Include TDD instructions in every implementer context.
|
|
265
|
+
|
|
266
|
+
### With requesting-code-review
|
|
267
|
+
|
|
268
|
+
The two-stage review process IS the code review. For final integration review, use the requesting-code-review skill's review dimensions.
|
|
269
|
+
|
|
270
|
+
### With systematic-debugging
|
|
271
|
+
|
|
272
|
+
If a subagent encounters bugs during implementation:
|
|
273
|
+
1. Follow systematic-debugging process
|
|
274
|
+
2. Find root cause before fixing
|
|
275
|
+
3. Write regression test
|
|
276
|
+
4. Resume implementation
|
|
277
|
+
|
|
278
|
+
## Example Workflow
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
[Read plan: docs/plans/auth-feature.md]
|
|
282
|
+
[Create todo list with 5 tasks]
|
|
283
|
+
|
|
284
|
+
--- Task 1: Create User model ---
|
|
285
|
+
[Dispatch implementer subagent]
|
|
286
|
+
Implementer: "Should email be unique?"
|
|
287
|
+
You: "Yes, email must be unique"
|
|
288
|
+
Implementer: Implemented, 3/3 tests passing, committed.
|
|
289
|
+
|
|
290
|
+
[Dispatch spec reviewer]
|
|
291
|
+
Spec reviewer: ✅ PASS — all requirements met
|
|
292
|
+
|
|
293
|
+
[Dispatch quality reviewer]
|
|
294
|
+
Quality reviewer: ✅ APPROVED — clean code, good tests
|
|
295
|
+
|
|
296
|
+
[Mark Task 1 complete]
|
|
297
|
+
|
|
298
|
+
--- Task 2: Password hashing ---
|
|
299
|
+
[Dispatch implementer subagent]
|
|
300
|
+
Implementer: No questions, implemented, 5/5 tests passing.
|
|
301
|
+
|
|
302
|
+
[Dispatch spec reviewer]
|
|
303
|
+
Spec reviewer: ❌ Missing: password strength validation (spec says "min 8 chars")
|
|
304
|
+
|
|
305
|
+
[Implementer fixes]
|
|
306
|
+
Implementer: Added validation, 7/7 tests passing.
|
|
307
|
+
|
|
308
|
+
[Dispatch spec reviewer again]
|
|
309
|
+
Spec reviewer: ✅ PASS
|
|
310
|
+
|
|
311
|
+
[Dispatch quality reviewer]
|
|
312
|
+
Quality reviewer: Important: Magic number 8, extract to constant
|
|
313
|
+
Implementer: Extracted MIN_PASSWORD_LENGTH constant
|
|
314
|
+
Quality reviewer: ✅ APPROVED
|
|
315
|
+
|
|
316
|
+
[Mark Task 2 complete]
|
|
317
|
+
|
|
318
|
+
... (continue for all tasks)
|
|
319
|
+
|
|
320
|
+
[After all tasks: dispatch final integration reviewer]
|
|
321
|
+
[Run full test suite: all passing]
|
|
322
|
+
[Done!]
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Remember
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
Fresh subagent per task
|
|
329
|
+
Two-stage review every time
|
|
330
|
+
Spec compliance FIRST
|
|
331
|
+
Code quality SECOND
|
|
332
|
+
Never skip reviews
|
|
333
|
+
Catch issues early
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Quality is not an accident. It's the result of systematic process.**
|
|
337
|
+
|
|
338
|
+
## Further reading (load when relevant)
|
|
339
|
+
|
|
340
|
+
When the orchestration involves significant context usage, long review loops, or complex validation checkpoints, load these references for the specific discipline:
|
|
341
|
+
|
|
342
|
+
- **`references/context-budget-discipline.md`** — Four-tier context degradation model (PEAK / GOOD / DEGRADING / POOR), read-depth rules that scale with context window size, and early warning signs of silent degradation. Load when a run will clearly consume significant context (multi-phase plans, many subagents, large artifacts).
|
|
343
|
+
- **`references/gates-taxonomy.md`** — The four canonical gate types (Pre-flight, Revision, Escalation, Abort) with behavior, recovery, and examples. Load when designing or reviewing any workflow that has validation checkpoints — use the vocabulary explicitly so each gate has defined entry, failure behavior, and resumption rules.
|
|
344
|
+
|
|
345
|
+
Both references adapted from gsd-build/get-shit-done (MIT © 2025 Lex Christopherson).
|