gsd-cc 0.8.0 → 0.9.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/bin/install.js +1 -1
- package/package.json +1 -1
- package/skills/gsd/SKILL.md +7 -1
- package/skills/gsd/discuss/SKILL.md +55 -2
- package/skills/gsd/profile/SKILL.md +169 -0
package/bin/install.js
CHANGED
|
@@ -27,7 +27,7 @@ ${cyan} ██████╗ ███████╗██████╗
|
|
|
27
27
|
`;
|
|
28
28
|
|
|
29
29
|
// Sub-skills that get their own top-level directory under .claude/skills/
|
|
30
|
-
const SUB_SKILLS = ['apply', 'auto', 'config', 'discuss', 'help', 'ideate', 'plan', 'seed', 'status', 'tutorial', 'unify', 'update'];
|
|
30
|
+
const SUB_SKILLS = ['apply', 'auto', 'config', 'discuss', 'help', 'ideate', 'plan', 'profile', 'seed', 'status', 'tutorial', 'unify', 'update'];
|
|
31
31
|
|
|
32
32
|
// Shared directories that go into gsd-cc-shared/
|
|
33
33
|
const SHARED_DIRS = ['checklists', 'prompts', 'templates'];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gsd-cc",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Get Shit Done on Claude Code — structured AI development with your Max plan",
|
|
5
5
|
"author": "Philipp Briese (https://github.com/0ui-labs)",
|
|
6
6
|
"homepage": "https://github.com/0ui-labs/GSD-CC#readme",
|
package/skills/gsd/SKILL.md
CHANGED
|
@@ -113,7 +113,12 @@ IF S*-PLAN.md exists for current slice AND no T*-SUMMARY.md files for it:
|
|
|
113
113
|
|
|
114
114
|
→ "1" or "manual" → delegate to /gsd-cc-apply
|
|
115
115
|
→ "2" or "auto" → delegate to /gsd-cc-auto (slice mode)
|
|
116
|
-
→ "3" or "full auto"
|
|
116
|
+
→ "3" or "full auto":
|
|
117
|
+
Check if .gsd/PROFILE.md exists.
|
|
118
|
+
If NOT: "Full auto needs a decision profile so Claude can make
|
|
119
|
+
decisions on your behalf. Run /gsd-cc-profile first (15-25 min).
|
|
120
|
+
Or choose option 2 instead."
|
|
121
|
+
If YES: delegate to /gsd-cc-auto (full milestone mode)
|
|
117
122
|
Set auto_mode_scope in STATE.md: "slice" or "milestone"
|
|
118
123
|
```
|
|
119
124
|
|
|
@@ -179,6 +184,7 @@ Execute S01? (manual or auto)
|
|
|
179
184
|
## Delegating to Sub-Skills
|
|
180
185
|
|
|
181
186
|
When routing to a sub-skill, tell the user what you're doing and then invoke the skill:
|
|
187
|
+
- Decision profile → `/gsd-cc-profile`
|
|
182
188
|
- Brainstorming → `/gsd-cc-ideate`
|
|
183
189
|
- Ideation → `/gsd-cc-seed`
|
|
184
190
|
- Discussion → `/gsd-cc-discuss`
|
|
@@ -149,11 +149,64 @@ phase: discuss-complete
|
|
|
149
149
|
|
|
150
150
|
**Do NOT continue in this session.** Each phase gets a fresh context window.
|
|
151
151
|
|
|
152
|
+
## Auto-Discuss Mode (Synthetic Stakeholder)
|
|
153
|
+
|
|
154
|
+
When running in full-auto mode (`auto_mode_scope: milestone`), Discuss is NOT skipped. Instead, it runs as an internal dialogue using the user's decision profile.
|
|
155
|
+
|
|
156
|
+
### How it works
|
|
157
|
+
|
|
158
|
+
1. Read `.gsd/PROFILE.md` — this is the user's decision-making profile
|
|
159
|
+
2. For each gray area, simulate a discussion:
|
|
160
|
+
- **You (Planner):** Ask the question as you would ask the user
|
|
161
|
+
- **Synthetic Stakeholder (Profile):** Answer based on PROFILE.md — using their instincts, preferences, strong opinions, and red lines
|
|
162
|
+
- The stakeholder MUST cite which part of the profile drives the decision
|
|
163
|
+
3. Write the results to `.gsd/S{nn}-DISCUSS-AUTO.md` with full transparency:
|
|
164
|
+
|
|
165
|
+
```markdown
|
|
166
|
+
# S{nn} Auto-Discuss — Synthetic Stakeholder Decisions
|
|
167
|
+
|
|
168
|
+
> These decisions were made by auto-mode using your decision profile.
|
|
169
|
+
> Review after UNIFY. Update your profile with /gsd-cc-profile if
|
|
170
|
+
> any decision doesn't match how you'd actually decide.
|
|
171
|
+
|
|
172
|
+
## Decision 1: {topic}
|
|
173
|
+
**Question:** {what was ambiguous}
|
|
174
|
+
**Stakeholder says:** {decision with reasoning}
|
|
175
|
+
**Profile basis:** {which section/quote from PROFILE.md}
|
|
176
|
+
**Confidence:** {high|medium|low — how clearly does the profile cover this?}
|
|
177
|
+
|
|
178
|
+
## Decision 2: {topic}
|
|
179
|
+
...
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Confidence levels
|
|
183
|
+
|
|
184
|
+
- **High:** The profile explicitly covers this (e.g., profile says "always REST for MVPs" and the question is REST vs GraphQL for an MVP)
|
|
185
|
+
- **Medium:** The profile gives strong hints but doesn't directly address this (e.g., profile says "simplicity over flexibility" and the question is about a specific pattern choice)
|
|
186
|
+
- **Low:** The profile doesn't clearly address this — the stakeholder is guessing. Mark these clearly so the user knows to review them.
|
|
187
|
+
|
|
188
|
+
### Rules for the Synthetic Stakeholder
|
|
189
|
+
|
|
190
|
+
- **Stay in character.** Answer as the user would, not as a senior dev or a textbook.
|
|
191
|
+
- **Use their language.** If the profile quotes them saying "I hate ORMs", the stakeholder says "no ORM" — not "consider avoiding object-relational mapping."
|
|
192
|
+
- **Respect red lines.** If the profile says "NEVER use MongoDB", the stakeholder never recommends MongoDB, even if it's technically optimal.
|
|
193
|
+
- **Be honest about uncertainty.** If the profile doesn't cover a topic, say "the profile doesn't address this, defaulting to {safe choice} — review recommended."
|
|
194
|
+
- **Capture wildcards.** If the profile has unpopular opinions or unconventional preferences, USE them. That's the whole point.
|
|
195
|
+
|
|
196
|
+
### If no PROFILE.md exists
|
|
197
|
+
|
|
198
|
+
If auto-mode runs without a profile, warn in the auto-discuss output:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
⚠ No decision profile found. Decisions are based on general best practices.
|
|
202
|
+
Run /gsd-cc-profile to create your profile for better auto-mode decisions.
|
|
203
|
+
```
|
|
204
|
+
|
|
152
205
|
## When to Skip Discuss
|
|
153
206
|
|
|
154
|
-
Discuss is optional. The `/gsd-cc` router may skip it if:
|
|
207
|
+
In MANUAL mode, Discuss is optional. The `/gsd-cc` router may skip it if:
|
|
155
208
|
- The slice description is already very specific
|
|
156
209
|
- The user explicitly says "skip discuss, go straight to planning"
|
|
157
210
|
- The rigor is `tight` and the slice is small
|
|
158
211
|
|
|
159
|
-
|
|
212
|
+
In FULL AUTO mode, Discuss is NEVER skipped — it runs as Auto-Discuss.
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-cc-profile
|
|
3
|
+
description: >
|
|
4
|
+
Deep interview to build a decision-making profile. Creates PROFILE.md
|
|
5
|
+
that auto-mode uses as a synthetic stakeholder. Use when user says
|
|
6
|
+
/gsd-cc-profile, wants to set up auto-mode preferences, or before
|
|
7
|
+
first full-auto run.
|
|
8
|
+
allowed-tools: Read, Write, Edit, Glob
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /gsd-cc-profile — Decision Profile
|
|
12
|
+
|
|
13
|
+
You conduct a deep interview to understand how the user thinks, decides, and builds software. The result is a PROFILE.md that lets a subagent simulate their decision-making in auto-mode discussions.
|
|
14
|
+
|
|
15
|
+
This is NOT a preferences survey. This is a deep conversation that reveals HOW someone thinks — their instincts, tradeoffs, things they've been burned by, hills they'll die on.
|
|
16
|
+
|
|
17
|
+
## Language
|
|
18
|
+
|
|
19
|
+
Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output must use that language. If not found, default to English.
|
|
20
|
+
|
|
21
|
+
## When to Run
|
|
22
|
+
|
|
23
|
+
- Before the first full-auto run (router should suggest this)
|
|
24
|
+
- When the user wants to update their profile
|
|
25
|
+
- Anytime via `/gsd-cc-profile`
|
|
26
|
+
|
|
27
|
+
If `.gsd/PROFILE.md` already exists, ask: "You already have a profile. Update it or start fresh?"
|
|
28
|
+
|
|
29
|
+
## The Interview
|
|
30
|
+
|
|
31
|
+
Go deep. This interview should take 15-25 minutes. Don't rush. Ask ONE question at a time. Follow up on interesting answers. The goal is to understand the person, not fill out a form.
|
|
32
|
+
|
|
33
|
+
### Section 1: Background & Context
|
|
34
|
+
|
|
35
|
+
- "What's your technical background? Self-taught, bootcamp, CS degree, something else?"
|
|
36
|
+
- "How long have you been building software?"
|
|
37
|
+
- "What's the biggest project you've shipped?"
|
|
38
|
+
- "Do you code full-time or is this a side project / business tool?"
|
|
39
|
+
|
|
40
|
+
Adapt the rest of the interview based on their level. A senior engineer gets different questions than a first-time vibe coder.
|
|
41
|
+
|
|
42
|
+
### Section 2: Architecture & Design Philosophy
|
|
43
|
+
|
|
44
|
+
- "When you start a new project, what do you set up first?"
|
|
45
|
+
- "Monolith or microservices — and why?"
|
|
46
|
+
- "How do you feel about ORMs? Raw SQL? Query builders?"
|
|
47
|
+
- "REST, GraphQL, tRPC, gRPC — what's your instinct and why?"
|
|
48
|
+
- "How much abstraction is too much? When does DRY become harmful?"
|
|
49
|
+
- "Do you prefer convention over configuration (Rails-style) or explicit control (Express-style)?"
|
|
50
|
+
- "What's a popular pattern or tool that you think is overrated?"
|
|
51
|
+
- "What's an unpopular opinion you hold about software architecture?"
|
|
52
|
+
|
|
53
|
+
### Section 3: Tech Stack Preferences
|
|
54
|
+
|
|
55
|
+
- "What languages do you reach for? What languages do you avoid?"
|
|
56
|
+
- "Frontend framework preference? Why?"
|
|
57
|
+
- "Database preference? SQL vs NoSQL — when and why?"
|
|
58
|
+
- "How do you feel about TypeScript? Strict mode?"
|
|
59
|
+
- "Testing: TDD, test-after, or 'I'll add tests when it breaks'?"
|
|
60
|
+
- "CSS approach: Tailwind, CSS modules, styled-components, vanilla?"
|
|
61
|
+
- "Package preferences: do you prefer fewer dependencies or best-in-class for each need?"
|
|
62
|
+
|
|
63
|
+
### Section 4: Quality & Standards
|
|
64
|
+
|
|
65
|
+
- "What does 'done' mean to you? When is code ready to ship?"
|
|
66
|
+
- "How much error handling is enough? Do you handle every edge case upfront or ship and iterate?"
|
|
67
|
+
- "Logging and observability: how much do you add from the start?"
|
|
68
|
+
- "Performance: optimize early or only when there's a measured problem?"
|
|
69
|
+
- "Security: what do you always do, what do you skip for MVPs?"
|
|
70
|
+
- "Code comments: a lot, a little, or 'the code should speak for itself'?"
|
|
71
|
+
|
|
72
|
+
### Section 5: Process & Decision-Making
|
|
73
|
+
|
|
74
|
+
- "When you face two valid approaches, how do you decide? Gut feeling? Research? Ask someone?"
|
|
75
|
+
- "How do you handle scope creep? Are you strict about MVP or do you let features grow?"
|
|
76
|
+
- "When something isn't working, how long do you try before switching approaches?"
|
|
77
|
+
- "What makes you rage-quit a library or tool?"
|
|
78
|
+
- "What's a mistake you've made that changed how you build things?"
|
|
79
|
+
|
|
80
|
+
### Section 6: Aesthetics & UX (if relevant)
|
|
81
|
+
|
|
82
|
+
- "How important is UI polish for v1?"
|
|
83
|
+
- "Do you prefer minimal/clean or feature-rich/dense interfaces?"
|
|
84
|
+
- "Mobile-first or desktop-first?"
|
|
85
|
+
- "Dark mode?"
|
|
86
|
+
- "What apps or websites do you think are really well-designed?"
|
|
87
|
+
|
|
88
|
+
### Section 7: Red Lines & Non-Negotiables
|
|
89
|
+
|
|
90
|
+
- "What should Claude NEVER do in your projects?"
|
|
91
|
+
- "What patterns or approaches are absolute no-gos for you?"
|
|
92
|
+
- "Any libraries or tools you refuse to use? Why?"
|
|
93
|
+
- "Is there anything where you'd rather have ugly-but-working than clean-but-incomplete?"
|
|
94
|
+
|
|
95
|
+
### Section 8: Wildcards
|
|
96
|
+
|
|
97
|
+
- "If you could mass-delete one concept from modern software development, what would it be?"
|
|
98
|
+
- "What do beginners understand better than experts?"
|
|
99
|
+
- "Is there a 'wrong' way of doing things that you secretly think is fine?"
|
|
100
|
+
|
|
101
|
+
## Generating PROFILE.md
|
|
102
|
+
|
|
103
|
+
After the interview, synthesize everything into `.gsd/PROFILE.md`:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
# Decision Profile
|
|
107
|
+
|
|
108
|
+
> This profile is used by auto-mode to simulate your decision-making.
|
|
109
|
+
> Update with /gsd-cc-profile. Review anytime.
|
|
110
|
+
|
|
111
|
+
## Summary
|
|
112
|
+
{2-3 sentences: who is this person as a builder?}
|
|
113
|
+
|
|
114
|
+
## Background
|
|
115
|
+
- Experience level: {junior/mid/senior/lead/non-technical}
|
|
116
|
+
- Primary languages: {list}
|
|
117
|
+
- Domain expertise: {areas}
|
|
118
|
+
|
|
119
|
+
## Architecture Instincts
|
|
120
|
+
{Paragraph capturing their architectural philosophy — not a list of
|
|
121
|
+
preferences but HOW they think about architecture. What drives their
|
|
122
|
+
decisions? Speed? Simplicity? Scalability? "It depends" with clear
|
|
123
|
+
criteria for when it depends?}
|
|
124
|
+
|
|
125
|
+
## Tech Stack Defaults
|
|
126
|
+
| Layer | Default Choice | Rationale |
|
|
127
|
+
|-------|---------------|-----------|
|
|
128
|
+
| Language | {choice} | {why} |
|
|
129
|
+
| Frontend | {choice} | {why} |
|
|
130
|
+
| Backend | {choice} | {why} |
|
|
131
|
+
| Database | {choice} | {why} |
|
|
132
|
+
| Styling | {choice} | {why} |
|
|
133
|
+
| Testing | {choice} | {why} |
|
|
134
|
+
| Deployment | {choice} | {why} |
|
|
135
|
+
|
|
136
|
+
## Quality Standards
|
|
137
|
+
- Definition of done: {their standard}
|
|
138
|
+
- Error handling approach: {description}
|
|
139
|
+
- Testing philosophy: {description}
|
|
140
|
+
- Performance stance: {description}
|
|
141
|
+
- Security baseline: {description}
|
|
142
|
+
|
|
143
|
+
## Decision-Making Style
|
|
144
|
+
{How they make decisions when facing tradeoffs. Do they optimize for
|
|
145
|
+
speed, correctness, simplicity? When do they research vs. go with
|
|
146
|
+
gut feeling? How much risk are they comfortable with?}
|
|
147
|
+
|
|
148
|
+
## Strong Opinions
|
|
149
|
+
{Things they feel strongly about — both positive and negative.
|
|
150
|
+
These are the hills they'll die on. Each with a brief WHY.}
|
|
151
|
+
|
|
152
|
+
## Red Lines
|
|
153
|
+
{Absolute no-gos. Things the synthetic stakeholder must NEVER choose
|
|
154
|
+
or recommend. Each with context for why.}
|
|
155
|
+
|
|
156
|
+
## Wildcards & Insights
|
|
157
|
+
{Non-obvious things from the interview — their unpopular opinions,
|
|
158
|
+
things they think beginners understand better, "wrong" approaches
|
|
159
|
+
they secretly like. These are the things that make the synthetic
|
|
160
|
+
stakeholder sound like THEM, not like a generic senior dev.}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Important Rules
|
|
164
|
+
|
|
165
|
+
- **Go deep, not wide.** If someone says "I prefer REST", ask WHY. The why is more valuable than the what — it lets the synthetic stakeholder reason about NEW situations.
|
|
166
|
+
- **Capture contradictions.** "I love TypeScript strict mode but I skip it for prototypes" — this nuance is what makes the profile useful.
|
|
167
|
+
- **Don't judge.** If they say "I don't write tests" — don't lecture. Understand why. Maybe they have a good reason. The profile should reflect who they ARE, not who they should be.
|
|
168
|
+
- **Quote them.** When they say something particularly characteristic, use their exact words in the profile. A synthetic stakeholder that sounds like them is more useful than one that sounds like a textbook.
|
|
169
|
+
- **This is not a settings file.** It's a character sheet. The goal is that someone reading the profile would say "yeah, that's exactly how [name] thinks."
|