@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.
- package/.claude-plugin/marketplace.json +11 -5
- package/.claude-plugin/plugin.json +9 -7
- package/README.md +101 -25
- package/hooks/hooks.json +26 -0
- package/hooks/session-guard-prompt.sh +59 -0
- package/hooks/session-guard.sh +155 -151
- package/package.json +2 -7
- package/skills/brace/SKILL.md +240 -14
- package/skills/brace/assets/gitignore-template +0 -3
- package/skills/brace/references/phase-prompts.md +37 -0
- package/skills/brace/references/report-template.md +5 -1
- package/skills/build/SKILL.md +292 -13
- package/skills/distil/SKILL.md +258 -7
- package/skills/manifest.json +26 -16
- package/skills/prime/SKILL.md +76 -8
- package/skills/rig/SKILL.md +165 -7
- package/skills/ship/SKILL.md +190 -19
- package/skills/speccy/SKILL.md +165 -0
- package/skills/speccy/references/interview-guide.md +96 -0
- package/skills/speccy/tests/evals.json +34 -0
- package/skills/sync/SKILL.md +175 -17
- package/commands/brace.md +0 -9
- package/commands/build.md +0 -9
- package/commands/distil.md +0 -9
- package/commands/prime.md +0 -9
- package/commands/rig.md +0 -9
- package/commands/ship.md +0 -9
- package/commands/sync.md +0 -9
- package/skills/brace/instructions.md +0 -229
- package/skills/build/instructions.md +0 -293
- package/skills/distil/instructions.md +0 -255
- package/skills/prime/instructions.md +0 -73
- package/skills/rig/instructions.md +0 -162
- package/skills/ship/instructions.md +0 -192
- package/skills/sync/instructions.md +0 -178
- package/src/cli.js +0 -482
package/skills/ship/SKILL.md
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ship
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
142
|
+
**If `--pr-only` flag: Stop here and report PR URL to user.**
|
|
41
143
|
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
+
]
|