* chore: rename npm package + bin to @opengsd/gsd-core (functional) - package.json: name @opengsd/get-shit-done-redux → @opengsd/gsd-core, bin key get-shit-done-redux → gsd-core, repository/homepage/bugs URLs - package-lock.json: regenerated (npm install --package-lock-only) - tests/**, scripts/**, bin/**, .github/**, agents/**, commands/**, get-shit-done/bin/**, get-shit-done/workflows/**: applied the 4-rule replacement (scoped npm ref, GitHub repo path, bin/clone invocations) per #505 single-source refactor Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs: sweep live references to @opengsd/gsd-core Update all live documentation (README.md + translations, docs/**, CONTRIBUTING.md, VERSIONING.md, SECURITY.md, CONTEXT.md, docs/CANARY.md) to reflect the renamed package and repository. Rules applied: - @opengsd/get-shit-done-redux → @opengsd/gsd-core (scoped npm name) - open-gsd/get-shit-done-redux → open-gsd/gsd-core (GitHub repo) - GSD-redux/get-shit-done-redux → open-gsd/gsd-core (stale badge org) - bare bin/clone refs → gsd-core CHANGELOG.md, docs/adr/**, docs/RELEASE-*.md, docs/research/**, and .changeset/** are preserved byte-identical. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix: add negative lookbehind to slash-command regex in bug-2954 test The extractSlashReferences regex matched /gsd-core inside npm package URLs (@opengsd/gsd-core), producing a false /gsd:core command reference. Adding a negative lookbehind (?<![a-z]) excludes matches preceded by a letter, so only standalone /gsd-<cmd> and /gsd:<cmd> tokens are found. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(#518): add changeset for package rename Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(#518): update package-identity expectations to the renamed coordinates The rebase regenerated the seam to @opengsd/gsd-core (bin gsd-core, repo open-gsd/gsd-core). The #498 seam tests assert deriveIdentity against the REAL package.json, so their expected literals must follow the rename. The drift-lint unit test is left as-is — its SEAM is a self-consistent fixture and its stale-literal detection cases would shift if altered; the live-repo scan in it already passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
6.7 KiB
<required_reading> Read all files referenced by the invoking prompt's execution_context before starting.
@/.claude/get-shit-done/references/questioning.md
@/.claude/get-shit-done/references/domain-probes.md
</required_reading>
<available_agent_types> Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'):
- gsd-phase-researcher — Researches specific questions and returns concise findings </available_agent_types>
Step 1: Open the conversation
If a topic was provided, acknowledge it and begin exploring:
## Explore: {topic}
Let's think through this together. I'll ask questions to help clarify the idea
before we commit to any artifacts.
If no topic, ask:
## Explore
What's on your mind? This could be a feature idea, an architectural question,
a problem you're trying to solve, or something you're not sure about yet.
Step 2: Socratic conversation (2-5 exchanges)
Guide the conversation using principles from questioning.md and domain-probes.md:
- Ask one question at a time (never a list of questions)
- Questions should probe: constraints, tradeoffs, users, scope, dependencies, risks
- Use domain-specific probes contextually when the topic touches a known domain
- Listen for signals: "or" / "versus" / "tradeoff" indicate competing priorities worth exploring
- Reflect back what you hear to confirm understanding before moving forward
Conversation should feel natural, not formulaic. Avoid rigid sequences. Follow the developer's energy — if they're excited about one aspect, go deeper there.
Step 3: Mid-conversation research offer (after 2-3 exchanges)
If the conversation surfaces factual questions, technology comparisons, or unknowns that research could resolve, offer:
This touches on [specific question]. Want me to do a quick research pass before we continue?
This would take ~30 seconds and might surface useful context.
[Yes, research this] / [No, let's keep exploring]
If yes, spawn a research agent:
Agent(
prompt="Quick research: {specific_question}. Return 3-5 key findings, no more than 200 words.",
subagent_type="gsd-phase-researcher"
)
ORCHESTRATOR RULE — CODEX RUNTIME: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
Share findings and continue the conversation.
If the topic doesn't warrant research, skip this step entirely. Don't force it.
Step 4: Crystallize outputs (after 3-6 exchanges)
When the conversation reaches natural conclusions or the developer signals readiness, propose outputs. Analyze the conversation to identify what was discussed and suggest up to 4 outputs from:
| Type | Destination | When to suggest |
|---|---|---|
| Note | .planning/notes/{slug}.md |
Observations, context, decisions worth remembering |
| Todo | .planning/todos/pending/{slug}.md |
Concrete actionable tasks identified |
| Seed | .planning/seeds/{slug}.md |
Forward-looking ideas with trigger conditions |
| Research question | .planning/research/questions.md (append) |
Open questions that need deeper investigation |
| Requirement | REQUIREMENTS.md (append) |
Clear requirements that emerged from discussion |
| New phase | ROADMAP.md (append) |
Scope large enough to warrant its own phase |
| Spike | /gsd:spike (invoke) |
Feasibility uncertainty surfaced — "will this API work?", "can we do X?" |
| Sketch | /gsd:sketch (invoke) |
Design direction unclear — "what should this look like?", "how should this feel?" |
Present suggestions:
Based on our conversation, I'd suggest capturing:
1. **Note:** "Authentication strategy decisions" — your reasoning about JWT vs sessions
2. **Todo:** "Evaluate Passport.js vs custom middleware" — the comparison you want to do
3. **Seed:** "OAuth2 provider support" — trigger: when user management phase starts
Create these? You can select specific ones or modify them.
[Create all] / [Let me pick] / [Skip — just exploring]
Never write artifacts without explicit user selection.
Step 5: Write selected outputs
For each selected output, write the file:
- Notes: Create
.planning/notes/{slug}.mdwith frontmatter (title, date, context) - Todos: Create
.planning/todos/pending/{slug}.mdwith frontmatter (title, date, priority) - Seeds: Create
.planning/seeds/{slug}.mdwith frontmatter (title, trigger_condition, planted_date) - Research questions: Append to
.planning/research/questions.md - Requirements: Append to
.planning/REQUIREMENTS.mdwith next available REQ ID - Phases: Use existing
/gsd-add-phasecommand via SlashCommand
Commit if commit_docs is enabled:
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi
gsd_run query commit "docs: capture exploration — {topic_slug}" --files {file_list}
Step 6: Close
## Exploration Complete
**Topic:** {topic}
**Outputs:** {count} artifact(s) created
{list of created files}
Continue exploring with `/gsd:explore` or start working with `/gsd:progress --next`.
<success_criteria>
- Socratic conversation follows questioning.md principles
- Questions asked one at a time, not in batches
- Research offered contextually (not forced)
- Up to 4 outputs proposed from conversation
- User explicitly selects which outputs to create
- Files written to correct destinations
- Commit respects commit_docs config </success_criteria>