@slamb2k/mad-skills 2.0.7 → 2.0.9

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.
@@ -1,11 +1,8 @@
1
1
  ---
2
2
  name: ship
3
- description: >
4
- Ship changes through the full PR lifecycle. Use after completing feature work
5
- to commit, push, create PR, wait for checks, and merge. Handles the entire
6
- workflow: syncs with main, creates feature branch if needed, groups commits
7
- logically with semantic messages, creates detailed PR, monitors CI, fixes
8
- issues, squash merges, and cleans up. Invoke when work is ready to ship.
3
+ description: "Ship changes through the full PR lifecycle. Use after completing feature work to commit, push, create PR, wait for checks, and merge. Handles the entire workflow: syncs with main, creates feature branch if needed, groups commits logically with semantic messages, creates detailed PR, monitors CI, fixes issues, squash merges, and cleans up. Invoke when work is ready to ship."
4
+ argument-hint: --pr-only, --no-squash, --keep-branch (optional flags)
5
+ allowed-tools: Bash, Read, Glob, Grep, Skill
9
6
  ---
10
7
 
11
8
  # Ship - Full PR Lifecycle
@@ -35,21 +32,195 @@ Taglines:
35
32
  - 📬 Another one for the merge queue!
36
33
  - 🟢 LGTM — Let's Get This Merged!
37
34
 
38
- Follow instructions in: [instructions.md](instructions.md)
35
+ ---
36
+
37
+ Ship changes through the complete PR lifecycle. Every stage runs in a subagent
38
+ to isolate context from the primary conversation. Prompts for each stage are
39
+ in `references/stage-prompts.md`.
40
+
41
+ ## Flags
42
+
43
+ Parse optional flags from the request:
44
+ - `--pr-only`: Stop after creating the PR
45
+ - `--no-squash`: Use regular merge instead of squash
46
+ - `--keep-branch`: Don't delete the source branch after merge
47
+
48
+ ---
49
+
50
+ ## Pre-flight
51
+
52
+ Before starting, check all dependencies in this table:
53
+
54
+ | Dependency | Type | Check | Required | Resolution | Detail |
55
+ |-----------|------|-------|----------|------------|--------|
56
+ | git | cli | `git --version` | yes | stop | Install from https://git-scm.com |
57
+ | gh | cli | `gh --version` | yes | url | https://cli.github.com |
58
+ | ship-analyzer | agent | `~/.claude/agents/ship-analyzer.md` | no | fallback | Uses general-purpose agent |
59
+
60
+ For each row, in order:
61
+ 1. Run the Check command (for cli/npm) or test file existence (for agent/skill)
62
+ 2. If found: continue silently
63
+ 3. If missing: apply Resolution strategy
64
+ - **stop**: notify user with Detail, halt execution
65
+ - **url**: notify user with Detail (install link), halt execution
66
+ - **install**: notify user, run the command in Detail, continue if successful
67
+ - **ask**: notify user, offer to run command in Detail, continue either way (or halt if required)
68
+ - **fallback**: notify user with Detail, continue with degraded behavior
69
+ 4. After all checks: summarize what's available and what's degraded
70
+
71
+ Read `default_branch` and `remote` from Stage 1's SYNC_REPORT. These are
72
+ substituted into all stage prompts as `{REMOTE}` and `{DEFAULT_BRANCH}`.
73
+
74
+ ### Platform Detection
75
+
76
+ After sync, detect the hosting platform from the remote URL:
77
+
78
+ ```bash
79
+ REMOTE_URL=$(git remote get-url {REMOTE} 2>/dev/null)
80
+ if echo "$REMOTE_URL" | grep -qiE 'dev\.azure\.com|visualstudio\.com'; then
81
+ PLATFORM="azdo"
82
+ elif echo "$REMOTE_URL" | grep -qi 'github\.com'; then
83
+ PLATFORM="github"
84
+ else
85
+ PLATFORM="github" # default fallback
86
+ fi
87
+ ```
88
+
89
+ Pass `{PLATFORM}` into all stage prompts. Each stage uses the appropriate
90
+ CLI tool: `gh` for GitHub, `az repos`/`az pipelines` for Azure DevOps.
91
+
92
+ > **Azure DevOps prerequisite:** The `az devops` extension must be installed
93
+ > and configured (`az devops configure --defaults organization=... project=...`).
94
+ > If `az repos` commands fail, report the setup requirement to the user.
95
+
96
+ ---
97
+
98
+ ## Stage 1: Sync
99
+
100
+ Launch **Bash subagent** (haiku — simple git commands):
101
+
102
+ ```
103
+ Task(
104
+ subagent_type: "Bash",
105
+ model: "haiku",
106
+ description: "Sync with default branch",
107
+ prompt: "Follow ~/.claude/skills/sync/SKILL.md subagent prompt. Return SYNC_REPORT."
108
+ )
109
+ ```
110
+
111
+ Parse SYNC_REPORT. Extract `remote` and `default_branch`. Abort if sync failed.
112
+
113
+ ---
114
+
115
+ ## Stage 2: Commit, Push & Create PR
116
+
117
+ This stage needs to **read and understand code** to write good commit messages
118
+ and PR descriptions. Use a code-aware subagent.
119
+
120
+ Launch **ship-analyzer subagent** (reads diffs + source files):
121
+
122
+ ```
123
+ Task(
124
+ subagent_type: "ship-analyzer",
125
+ description: "Analyze, commit, push, and create PR",
126
+ prompt: <read from references/stage-prompts.md#stage-2>
127
+ )
128
+ ```
129
+
130
+ > **Fallback:** If `ship-analyzer` is not available, use `subagent_type: "general-purpose"`.
131
+
132
+ Substitute `{USER_INTENT}`, `{FILES_TO_INCLUDE}`, `{FILES_TO_EXCLUDE}`,
133
+ `{REMOTE}`, `{DEFAULT_BRANCH}`, `{PLATFORM}` into the prompt.
134
+
135
+ Parse SHIP_REPORT. Abort if failed.
136
+
137
+ **Rollback:** If push succeeds but PR creation fails, report the error and
138
+ suggest the manual PR creation command. Do NOT revert the push.
139
+ - GitHub: `gh pr create --head {branch}`
140
+ - Azure DevOps: `az repos pr create --source-branch {branch} --target-branch {DEFAULT_BRANCH}`
39
141
 
40
- ## Subagent Architecture
142
+ **If `--pr-only` flag: Stop here and report PR URL to user.**
41
143
 
42
- All work runs in subagents to keep the primary conversation context clean:
144
+ ---
145
+
146
+ ## Stage 3: Wait for CI
147
+
148
+ Launch **Bash subagent** in the **background** (haiku — just polling):
149
+
150
+ ```
151
+ Task(
152
+ subagent_type: "Bash",
153
+ model: "haiku",
154
+ run_in_background: true,
155
+ description: "Monitor CI checks",
156
+ prompt: <read from references/stage-prompts.md#stage-3>
157
+ )
158
+ ```
159
+
160
+ Substitute `{PR_NUMBER}` into the prompt.
161
+
162
+ While CI runs in the background, briefly inform the user:
163
+ ```
164
+ CI running for PR #{pr_number}... waiting for checks.
165
+ ```
166
+
167
+ When the background task completes, read the output file and parse CHECKS_REPORT.
168
+
169
+ ---
170
+
171
+ ## Stage 4: Fix Failing Checks (if needed)
172
+
173
+ If CHECKS_REPORT shows failures, launch **general-purpose subagent**:
174
+
175
+ ```
176
+ Task(
177
+ subagent_type: "general-purpose",
178
+ description: "Fix CI failures",
179
+ prompt: <read from references/stage-prompts.md#stage-4>
180
+ )
181
+ ```
182
+
183
+ Substitute `{PR_NUMBER}`, `{BRANCH}`, `{FAILING_CHECKS}` into the prompt.
43
184
 
44
- | Stage | Agent Type | Model | Purpose |
45
- |-------|-----------|-------|---------|
46
- | Sync | Bash | haiku | Git sync (cheap, fast) |
47
- | Ship | ship-analyzer | sonnet | Analyze code, commit, push, create PR |
48
- | CI | Bash (background) | haiku | Poll checks without blocking |
49
- | Fix CI | general-purpose | default | Read code, fix failures |
50
- | Land | Bash | haiku | Merge + final sync |
185
+ If fixed, return to Stage 3 (run CI watch again).
186
+ If unable to fix after 2 attempts, report to user and stop.
51
187
 
52
- The `ship-analyzer` custom agent (`~/.claude/agents/ship-analyzer.md`) reads
53
- source files to write meaningful commit messages and PR descriptions.
54
- Falls back to `general-purpose` if not installed.
188
+ ---
189
+
190
+ ## Stage 5: Merge & Final Sync
191
+
192
+ Launch **Bash subagent** (haiku — simple git + platform CLI commands):
193
+
194
+ ```
195
+ Task(
196
+ subagent_type: "Bash",
197
+ model: "haiku",
198
+ description: "Merge PR and sync",
199
+ prompt: <read from references/stage-prompts.md#stage-5>
200
+ )
201
+ ```
202
+
203
+ Substitute `{PR_NUMBER}`, `{REMOTE}`, `{DEFAULT_BRANCH}`, merge/branch flags.
204
+
205
+ Parse LAND_REPORT.
206
+
207
+ ---
208
+
209
+ ## Final Report to User
210
+
211
+ Compile all stage reports into a summary:
212
+
213
+ ```
214
+ Ship complete
215
+
216
+ Branch: {branch}
217
+ PR: {pr_url}
218
+ Merged: {merge_commit} ({merge_type})
219
+
220
+ Commits:
221
+ {list of commit messages, indented}
222
+
223
+ Files: {count} files changed ({diff_summary})
224
+ ```
55
225
 
226
+ If any stage failed, report the failure point and suggested resolution.
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: speccy
3
+ description: Deep-dive interview skill for creating comprehensive specifications. Reviews existing code and docs, then interviews the user through multiple rounds of targeted questions covering technical implementation, UI/UX, concerns, and tradeoffs. Produces a structured spec via create-specification. Use when starting a new feature, system, or major change that needs a spec.
4
+ argument-hint: Goal, feature, or high-level description to specify
5
+ allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
6
+ ---
7
+
8
+ # Speccy - Interview-Driven Specification Builder
9
+
10
+ When this skill is invoked, IMMEDIATELY output the banner below before doing anything else.
11
+ Pick ONE tagline at random — vary your choice each time.
12
+ CRITICAL: Reproduce the banner EXACTLY character-for-character. The first line of the art has 4 leading spaces — you MUST preserve them.
13
+
14
+ ```
15
+ {tagline}
16
+
17
+ ⠀ ██╗███████╗██████╗ ███████╗ ██████╗ ██████╗██╗ ██╗
18
+ ██╔╝██╔════╝██╔══██╗██╔════╝██╔════╝██╔════╝╚██╗ ██╔╝
19
+ ██╔╝ ███████╗██████╔╝█████╗ ██║ ██║ ╚████╔╝
20
+ ██╔╝ ╚════██║██╔═══╝ ██╔══╝ ██║ ██║ ╚██╔╝
21
+ ██╔╝ ███████║██║ ███████╗╚██████╗╚██████╗ ██║
22
+ ╚═╝ ╚══════╝╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝
23
+ ```
24
+
25
+ Taglines:
26
+ - 🔍 Tell me everything...
27
+ - 🧠 Let's think this through!
28
+ - 📋 Spec it before you wreck it!
29
+ - 🎤 Interview mode: ACTIVATED
30
+ - 💡 Great specs start with great questions!
31
+ - 🏗️ Measure twice, code once!
32
+ - 📝 No assumption left behind!
33
+ - 🎯 Precision engineering starts here!
34
+
35
+ ---
36
+
37
+ Interview the user through multiple rounds of targeted questions to build
38
+ a comprehensive specification. Then hand off to the `create-specification`
39
+ skill to produce the final structured spec document.
40
+
41
+ Interview prompts and question guidelines: `references/interview-guide.md`
42
+
43
+ ## Pre-flight
44
+
45
+ Before starting, check all dependencies in this table:
46
+
47
+ | Dependency | Type | Check | Required | Resolution | Detail |
48
+ |-----------|------|-------|----------|------------|--------|
49
+ | create-specification | skill | `~/.claude/skills/create-specification/SKILL.md` or `~/.agents/skills/create-specification/SKILL.md` | yes | ask | This skill is needed to format the final spec. Install with: `npx skills add slamb2k/mad-skills --skill create-specification` |
50
+
51
+ For each row, in order:
52
+ 1. Test file existence (check both paths for symlinked skills)
53
+ 2. If found: continue silently
54
+ 3. If missing: apply Resolution strategy
55
+ - **ask**: Notify user the skill is missing, offer to install it. If they
56
+ decline, halt execution — the final spec cannot be produced without it.
57
+ 4. After all checks: proceed to context gathering
58
+
59
+ ---
60
+
61
+ ## Stage 1: Context Gathering
62
+
63
+ Before asking any questions, build a thorough understanding of the project:
64
+
65
+ 1. **Capture GOAL** — the user's argument describing what needs to be specified
66
+ 2. **Scan the project**:
67
+ - Read `CLAUDE.md` if present (project conventions, structure, domain)
68
+ - Read goal/spec manifests: `goals/manifest.md`, `spec/` directory
69
+ - Scan existing specs and design docs for context
70
+ - Read relevant source code that relates to the GOAL
71
+ - Check memory for prior decisions or open questions related to the GOAL
72
+ 3. **Identify knowledge gaps** — what must you learn from the user to write
73
+ a complete, unambiguous specification?
74
+
75
+ Group gaps into interview categories:
76
+ - **Architecture & Technical Design** — stack, patterns, data flow, integrations
77
+ - **Requirements & Scope** — what's in, what's out, must-haves vs nice-to-haves
78
+ - **UI & UX** — user flows, interaction patterns, accessibility, responsive
79
+ - **Security & Auth** — authentication, authorization, data protection
80
+ - **Infrastructure & Deployment** — hosting, CI/CD, environments, IaC
81
+ - **Data & Storage** — schemas, persistence, migrations, caching
82
+ - **Testing & Quality** — test strategy, coverage, acceptance criteria
83
+ - **Concerns & Tradeoffs** — known risks, alternatives considered, constraints
84
+
85
+ ---
86
+
87
+ ## Stage 2: Interview Rounds
88
+
89
+ Conduct multiple rounds of questions using `AskUserQuestion`. Continue until
90
+ all knowledge gaps are resolved.
91
+
92
+ ### Question Rules
93
+
94
+ 1. **4 questions per round maximum** (AskUserQuestion limit)
95
+ 2. **Non-obvious questions only** — don't ask things you can determine from
96
+ reading the code or docs. The user's time is valuable.
97
+ 3. **Recommendations** — where you have an informed opinion based on the
98
+ codebase, project conventions, or industry best practice, mark one option
99
+ as recommended by listing it first and appending `(Recommended)` to its label.
100
+ At least one question per round should have a recommendation where possible.
101
+ 4. **Concise options** — 2-4 options per question, each with a clear
102
+ description of implications and tradeoffs
103
+ 5. **Progressive depth** — start with high-level architecture and scope,
104
+ then drill into implementation details in later rounds
105
+ 6. **Build on answers** — use previous round answers to inform next questions.
106
+ Don't re-ask decided topics.
107
+ 7. **Track decisions** — maintain a running list of all decisions made.
108
+ Present this list at the start of each round so the user can see progress.
109
+
110
+ ### Round Structure
111
+
112
+ Each round follows this pattern:
113
+
114
+ 1. **Progress update** — brief summary of decisions made so far (after round 1)
115
+ 2. **Category label** — which interview category this round covers
116
+ 3. **Questions** — 3-4 targeted questions via AskUserQuestion
117
+ 4. **Evaluate** — after answers, determine if more questions are needed
118
+
119
+ ### Completion Criteria
120
+
121
+ Stop interviewing when ALL of the following are true:
122
+ - All identified knowledge gaps have been addressed
123
+ - No answer has raised new unresolved questions
124
+ - You have enough information to write every section of the spec template
125
+ - The user has confirmed scope boundaries (what's in and what's out)
126
+
127
+ When complete, briefly present a **Decision Summary** — a numbered list of
128
+ all decisions made across all rounds — and confirm with the user before
129
+ proceeding to spec generation.
130
+
131
+ ---
132
+
133
+ ## Stage 3: Generate Specification
134
+
135
+ Once the interview is complete and decisions are confirmed:
136
+
137
+ 1. **Invoke the `create-specification` skill** using the Skill tool:
138
+ ```
139
+ Skill(skill: "create-specification")
140
+ ```
141
+
142
+ 2. **Provide the full context** to the skill as input:
143
+ - The original GOAL
144
+ - All decisions from the interview rounds
145
+ - Any relevant code/architecture context discovered in Stage 1
146
+ - The spec purpose should match the GOAL description
147
+
148
+ 3. The `create-specification` skill will handle formatting, naming, and
149
+ saving the spec file according to its own template and conventions.
150
+
151
+ ---
152
+
153
+ ## Output
154
+
155
+ After the spec is created, report to the user:
156
+
157
+ ```
158
+ Spec complete!
159
+
160
+ File: {spec file path}
161
+ Sections: {count of sections written}
162
+ Decisions: {count of interview decisions captured}
163
+ Rounds: {count of interview rounds conducted}
164
+ Questions: {total questions asked}
165
+ ```
@@ -0,0 +1,96 @@
1
+ # Interview Guide
2
+
3
+ Reference material for conducting effective specification interviews.
4
+
5
+ ---
6
+
7
+ ## Question Categories & Example Topics
8
+
9
+ ### Architecture & Technical Design
10
+ - Compute model (serverless vs hosted vs edge)
11
+ - Frontend framework and rendering strategy
12
+ - API design (REST vs GraphQL, versioning)
13
+ - State management approach
14
+ - Caching strategy
15
+ - Real-time requirements (WebSockets, SSE, polling)
16
+ - Monorepo vs multi-repo structure
17
+
18
+ ### Requirements & Scope
19
+ - Core user stories and acceptance criteria
20
+ - Feature phasing (MVP vs full implementation)
21
+ - Must-have vs nice-to-have features
22
+ - Known limitations or explicit non-goals
23
+ - Backward compatibility requirements
24
+
25
+ ### UI & UX
26
+ - Navigation model (wizard, tabs, SPA routing)
27
+ - Theme and visual design (light/dark, brand)
28
+ - Component library choice
29
+ - Responsive and mobile requirements
30
+ - Accessibility standards (WCAG level)
31
+ - Loading states and error presentation
32
+ - Dashboard and data visualisation approach
33
+
34
+ ### Security & Auth
35
+ - Authentication method (SSO, OAuth, API keys)
36
+ - Authorization model (RBAC, ABAC, per-resource)
37
+ - Data sensitivity and encryption requirements
38
+ - Audit logging needs
39
+ - Session management
40
+
41
+ ### Infrastructure & Deployment
42
+ - Hosting platform (Azure, AWS, GCP, self-hosted)
43
+ - IaC tooling (Bicep, Terraform, Pulumi)
44
+ - CI/CD pipeline design
45
+ - Environment strategy (dev, staging, prod)
46
+ - Monitoring and alerting
47
+ - Cost constraints
48
+
49
+ ### Data & Storage
50
+ - Primary data store (SQL, NoSQL, blob, file)
51
+ - Data retention and lifecycle policies
52
+ - Migration strategy
53
+ - Caching layers
54
+ - Data import/export formats
55
+
56
+ ### Testing & Quality
57
+ - Test framework and tooling
58
+ - Coverage targets
59
+ - Integration and E2E test approach
60
+ - Performance testing requirements
61
+ - Linting and formatting standards
62
+
63
+ ### Concerns & Tradeoffs
64
+ - Known technical risks
65
+ - Alternatives considered and why rejected
66
+ - Performance vs complexity tradeoffs
67
+ - Build vs buy decisions
68
+ - Technical debt acceptance
69
+
70
+ ---
71
+
72
+ ## Anti-Patterns to Avoid
73
+
74
+ - **Don't ask what you can read** — if the codebase already answers it, don't ask
75
+ - **Don't ask leading questions** — present options neutrally (except recommendations)
76
+ - **Don't ask compound questions** — one decision per question
77
+ - **Don't ask about implementation details too early** — architecture first
78
+ - **Don't assume technology** — let the user confirm even if it seems obvious
79
+ - **Don't skip the "why"** — understanding rationale prevents spec rot
80
+
81
+ ---
82
+
83
+ ## Recommendation Guidelines
84
+
85
+ When marking an option as `(Recommended)`:
86
+
87
+ 1. **Base it on evidence** — codebase patterns, project conventions, or the
88
+ specific constraints you've discovered
89
+ 2. **Explain why in the description** — the recommendation reason should be
90
+ clear from the option's description text
91
+ 3. **Don't force it** — if you genuinely don't have a strong opinion, don't
92
+ recommend. Quality over quantity.
93
+ 4. **Respect existing choices** — if the project already uses a technology
94
+ or pattern, recommending consistency is usually right
95
+ 5. **Consider the user's context** — team size, timeline, and expertise
96
+ matter more than theoretical best practice
@@ -0,0 +1,34 @@
1
+ [
2
+ {
3
+ "name": "speccy-invocation-banner",
4
+ "prompt": "Run the speccy skill with no arguments",
5
+ "assertions": [
6
+ {
7
+ "type": "contains",
8
+ "value": "SPECCY"
9
+ },
10
+ {
11
+ "type": "contains",
12
+ "value": "██"
13
+ }
14
+ ]
15
+ },
16
+ {
17
+ "name": "speccy-interview-categories",
18
+ "prompt": "What question categories does the speccy skill use?",
19
+ "assertions": [
20
+ {
21
+ "type": "contains",
22
+ "value": "Architecture"
23
+ },
24
+ {
25
+ "type": "contains",
26
+ "value": "Requirements"
27
+ },
28
+ {
29
+ "type": "contains",
30
+ "value": "Security"
31
+ }
32
+ ]
33
+ }
34
+ ]