refactor: hard-fork GSD -> MSD (Make Software Done)
Mechanical rename produced by scripts/msd-rename.cjs: gsd/Gsd/GSD -> msd/Msd/MSD across contents and paths, upstream package/repo coordinates -> @golem15/msd-core and golem15com/msd-core. Deep links into upstream history, sibling upstream packages, the GSD-2 import feature, CHANGELOG.md and .changeset/ are kept as-is. Hand edits on top: MSD block-letter banner and logos, LICENSE copyright line, package/plugin identity, regenerated lockfile, install-tree fixtures, derived registries and benchmark baseline; migration checksum baseline re-locked (MSD keeps its own install state, so no install had applied the old sums); sort-order and regex-escaped expectations in tests adjusted.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -19,10 +19,10 @@
|
||||
"ai-integration-phase"
|
||||
],
|
||||
"agents": [
|
||||
"gsd-framework-selector",
|
||||
"gsd-ai-researcher",
|
||||
"gsd-domain-researcher",
|
||||
"gsd-eval-planner"
|
||||
"msd-framework-selector",
|
||||
"msd-ai-researcher",
|
||||
"msd-domain-researcher",
|
||||
"msd-eval-planner"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
|
||||
@@ -21,8 +21,8 @@ returns a typed result: `{ detected, signals[], terms }`. Run it on the phase
|
||||
scope (the concatenation of this phase's ROADMAP section + the PLAN body):
|
||||
|
||||
```bash
|
||||
SCOPE="$(cat "${PHASE_DIR}"/*-PLAN.md 2>/dev/null) $(gsd_run query roadmap.get-phase "${PHASE}" 2>/dev/null || true)"
|
||||
API_COVERAGE_JSON=$(printf '%s' "$SCOPE" | node gsd-core/bin/lib/api-coverage.cjs --json 2>/dev/null) || true
|
||||
SCOPE="$(cat "${PHASE_DIR}"/*-PLAN.md 2>/dev/null) $(msd_run query roadmap.get-phase "${PHASE}" 2>/dev/null || true)"
|
||||
API_COVERAGE_JSON=$(printf '%s' "$SCOPE" | node msd-core/bin/lib/api-coverage.cjs --json 2>/dev/null) || true
|
||||
[ -n "$API_COVERAGE_JSON" ] || API_COVERAGE_JSON='{"skipped":true,"reason":"probe_unavailable"}'
|
||||
```
|
||||
|
||||
@@ -127,11 +127,11 @@ plan time; do not leave it for seal time.
|
||||
## Tuning the vocabulary (optional)
|
||||
|
||||
The trigger vocabulary is a curated, additive-only set in
|
||||
`gsd-core/bin/lib/api-coverage.cjs` (`DEFAULT_API_COVERAGE_TERMS`). To widen it
|
||||
`msd-core/bin/lib/api-coverage.cjs` (`DEFAULT_API_COVERAGE_TERMS`). To widen it
|
||||
for a project, override at the call site:
|
||||
|
||||
```bash
|
||||
printf '%s' "$SCOPE" | node gsd-core/bin/lib/api-coverage.cjs --json \
|
||||
printf '%s' "$SCOPE" | node msd-core/bin/lib/api-coverage.cjs --json \
|
||||
--verbs integrate,wrap,connect,embed --nouns api,sdk,rest,grpc,webhook,plugin
|
||||
```
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -22,7 +22,7 @@
|
||||
"antigravity-ide",
|
||||
"antigravity-cli"
|
||||
],
|
||||
"probeExists": "gsd-core/VERSION"
|
||||
"probeExists": "msd-core/VERSION"
|
||||
},
|
||||
"localConfigDir": ".agents",
|
||||
"configFormat": "settings-json",
|
||||
@@ -31,7 +31,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToAntigravitySkill",
|
||||
@@ -40,7 +40,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToAntigravityAgent",
|
||||
@@ -51,7 +51,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToAntigravitySkill"
|
||||
@@ -59,7 +59,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToAntigravityAgent"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -11,13 +11,13 @@ Most quietly-imported architectural debt does not come from a missing upfront de
|
||||
The detector is a deterministic scan over the phase scope text. It strips fenced code blocks first, so a trigger word that appears only inside a code snippet does not fire. It returns a typed result: `{ detected, signals[], terms }`. Resolve it through the `assumption-delta scan` query (same phase-section resolver as `roadmap.get-phase`):
|
||||
|
||||
```bash
|
||||
ASSUMPTION_DELTA_JSON=$(gsd_run query assumption-delta scan "${PHASE}" --json 2>/dev/null) || true
|
||||
ASSUMPTION_DELTA_JSON=$(msd_run query assumption-delta scan "${PHASE}" --json 2>/dev/null) || true
|
||||
[ -n "$ASSUMPTION_DELTA_JSON" ] || ASSUMPTION_DELTA_JSON='{"skipped":true,"reason":"probe_unavailable"}'
|
||||
```
|
||||
|
||||
> If the phase section cannot be resolved (no `ROADMAP.md` / unknown phase, or a section with no body), the query emits `{ "skipped": true, "reason": "phase_unresolved" }` — **not** `detected:false`. A probe that never had input does not get to assert that this phase changes no core assumption. The checkpoint does not fire either way; the difference is that a skip is now distinguishable from a real negative. Do not block on it.
|
||||
>
|
||||
> Optional tuning — pass `--terms <comma-list>` to replace the curated pluralization cues for this project (the `optional`/`chosen` cues keep their defaults): `gsd_run query assumption-delta scan "${PHASE}" --json --terms second,alternative,fallback`.
|
||||
> Optional tuning — pass `--terms <comma-list>` to replace the curated pluralization cues for this project (the `optional`/`chosen` cues keep their defaults): `msd_run query assumption-delta scan "${PHASE}" --json --terms second,alternative,fallback`.
|
||||
|
||||
## Decision branch
|
||||
|
||||
@@ -51,6 +51,6 @@ When `detected` is `true`, suggest (do not require) a contract/invariant test th
|
||||
|
||||
## Tuning the vocabulary (optional)
|
||||
|
||||
The trigger vocabulary is a curated, additive-only set in `gsd-core/bin/lib/assumption-delta.cjs` (`DEFAULT_ASSUMPTION_DELTA_TERMS`). Bare "or" is intentionally excluded — it is too common in prose and would make the gate fire constantly. To widen or narrow the cues for a project, override at the call site with `--terms <comma-list>` (replaces the pluralization cues; `optional`/`chosen` keep defaults). The whole checkpoint is toggleable via `workflow.assumption_delta` in `.planning/config.json`.
|
||||
The trigger vocabulary is a curated, additive-only set in `msd-core/bin/lib/assumption-delta.cjs` (`DEFAULT_ASSUMPTION_DELTA_TERMS`). Bare "or" is intentionally excluded — it is too common in prose and would make the gate fire constantly. To widen or narrow the cues for a project, override at the call site with `--terms <comma-list>` (replaces the pluralization cues; `optional`/`chosen` keep defaults). The whole checkpoint is toggleable via `workflow.assumption_delta` in `.planning/config.json`.
|
||||
|
||||
This checkpoint is advisory: it informs and records; it never blocks the phase.
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Audit",
|
||||
"description": "Open-artifact audit and UAT-gap audit for milestone close gates; exposes `gsd-tools audit-uat` (cross-phase UAT outstanding items) and `gsd-tools audit-open` (structured open-artifact scan across debug, tasks, threads, todos, seeds, UAT, verification, context-questions).",
|
||||
"description": "Open-artifact audit and UAT-gap audit for milestone close gates; exposes `msd-tools audit-uat` (cross-phase UAT outstanding items) and `msd-tools audit-open` (structured open-artifact scan across debug, tasks, threads, todos, seeds, UAT, verification, context-questions).",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToAugmentSkill"
|
||||
@@ -40,7 +40,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToAugmentAgent"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -58,7 +58,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToAugmentSkill"
|
||||
@@ -66,7 +66,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToAugmentAgent"
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Broken-windows ledger",
|
||||
"description": "Cross-phase defect register accumulating stubs, TODOs, skipped tests, unrun verifies, and unmet truths into .planning/WINDOWS.md. When enforcement is enabled, it blocks /gsd-ship while any window is open unless explicitly waived with a recorded reason. Operationalizes GSD's no-defer discipline as a tracked artifact (issue #1950).",
|
||||
"description": "Cross-phase defect register accumulating stubs, TODOs, skipped tests, unrun verifies, and unmet truths into .planning/WINDOWS.md. When enforcement is enabled, it blocks /msd-ship while any window is open unless explicitly waived with a recorded reason. Operationalizes MSD's no-defer discipline as a tracked artifact (issue #1950).",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.7.0"
|
||||
"msd": ">=1.7.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -22,7 +22,7 @@
|
||||
"workflow.windows_enforce": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Enable the blocking ship:pre gate for the broken-windows ledger. When true (opt-in), /gsd-ship blocks while .planning/WINDOWS.md has any open entry. When false (default), windows are still tracked (the executor and verifier still populate WINDOWS.md via gsd-tools windows append) but ship does not block — teams can adopt tracking before enforcement. Issue #1950."
|
||||
"description": "Enable the blocking ship:pre gate for the broken-windows ledger. When true (opt-in), /msd-ship blocks while .planning/WINDOWS.md has any open entry. When false (default), windows are still tracked (the executor and verifier still populate WINDOWS.md via msd-tools windows append) but ship does not block — teams can adopt tracking before enforcement. Issue #1950."
|
||||
}
|
||||
},
|
||||
"steps": [],
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Claude orchestration (Workflow backend)",
|
||||
"description": "Default-off, BETA, claude-only capability that adopts Claude Code's Workflow tool (the engine behind /effort ultracode) as an optional parallel-execution backend for the GSD loop. When the runtime exposes the Workflow tool and claude_orchestration.execution_backend resolves to 'workflow', execute-phase emits a generated Workflow script (waves -> parallel() barriers, plans -> agent({ agentType: 'gsd-executor', isolation: 'worktree' }), files_modified overlap -> separate sequential stages, resumeFromRunId wired to the phase run id, shared token budget) that composes the SAME gsd-executor agent and worktree isolation the inline path uses, restoring the wave parallelism the #853 backgrounded-agent nesting limitation forces inline on Claude Code. (The plan-checker and verifier remain inline until separately wired — this capability delivers the parallel-execution backend, not those gates.) Also folds the ultraplan plan-offload under one runtime gate (plan:* surface). On any runtime lacking the Workflow tool, or when the capability is disabled, behaviour is byte-identical to today (inline/manual dispatch). Detection + emission live in gsd-core/bin/lib/claude-orchestration.cjs (pure, fail-closed). Mirrors the existing gsd-ultraplan-phase BETA-isolation posture.",
|
||||
"description": "Default-off, BETA, claude-only capability that adopts Claude Code's Workflow tool (the engine behind /effort ultracode) as an optional parallel-execution backend for the MSD loop. When the runtime exposes the Workflow tool and claude_orchestration.execution_backend resolves to 'workflow', execute-phase emits a generated Workflow script (waves -> parallel() barriers, plans -> agent({ agentType: 'msd-executor', isolation: 'worktree' }), files_modified overlap -> separate sequential stages, resumeFromRunId wired to the phase run id, shared token budget) that composes the SAME msd-executor agent and worktree isolation the inline path uses, restoring the wave parallelism the #853 backgrounded-agent nesting limitation forces inline on Claude Code. (The plan-checker and verifier remain inline until separately wired — this capability delivers the parallel-execution backend, not those gates.) Also folds the ultraplan plan-offload under one runtime gate (plan:* surface). On any runtime lacking the Workflow tool, or when the capability is disabled, behaviour is byte-identical to today (inline/manual dispatch). Detection + emission live in msd-core/bin/lib/claude-orchestration.cjs (pure, fail-closed). Mirrors the existing msd-ultraplan-phase BETA-isolation posture.",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.7.0"
|
||||
"msd": ">=1.7.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -51,7 +51,7 @@ Before spawning executor agents for the current wave (execute-phase.md step 3),
|
||||
resolve the dispatch backend through the single composed CLI seam:
|
||||
|
||||
```bash
|
||||
gsd-tools claude-orchestration resolve-wave-dispatch \
|
||||
msd-tools claude-orchestration resolve-wave-dispatch \
|
||||
--waves "$WAVE_MANIFEST_PATH" --run-id "$PHASE_RUN_ID" \
|
||||
--runtime "$RUNTIME" \
|
||||
--phase-dir "$PHASE_DIR" --raw
|
||||
@@ -68,7 +68,7 @@ unknown. Pass `--agent-sdk-version <ver>` explicitly only to pin a version.
|
||||
This composes `detectWorkflowBackend` (the gate ladder above) with
|
||||
`emitWorkflowScript` (the wave→plan mapping below) in ONE call — the pure
|
||||
function backing it is `resolveWaveDispatch` in
|
||||
`gsd-core/bin/lib/claude-orchestration.cjs`. Response shape:
|
||||
`msd-core/bin/lib/claude-orchestration.cjs`. Response shape:
|
||||
`{ backend: 'inline'|'workflow', reason, script?, summary? }`.
|
||||
|
||||
### Manifest construction (`$WAVE_MANIFEST_PATH`, `$PHASE_RUN_ID`, `$PHASE_DIR`)
|
||||
@@ -96,7 +96,7 @@ them at this step, from data it already has in-context from `discover_and_group_
|
||||
dispatched in wave order, not all at once):
|
||||
|
||||
```bash
|
||||
WAVE_MANIFEST_PATH=$(mktemp "${TMPDIR:-/tmp}/gsd-wave-dispatch-XXXXXX") && mv "$WAVE_MANIFEST_PATH" "$WAVE_MANIFEST_PATH.json" && WAVE_MANIFEST_PATH="$WAVE_MANIFEST_PATH.json"
|
||||
WAVE_MANIFEST_PATH=$(mktemp "${TMPDIR:-/tmp}/msd-wave-dispatch-XXXXXX") && mv "$WAVE_MANIFEST_PATH" "$WAVE_MANIFEST_PATH.json" && WAVE_MANIFEST_PATH="$WAVE_MANIFEST_PATH.json"
|
||||
```
|
||||
|
||||
Then **use the Write tool** (not a bash/jq pipeline — the orchestrator already
|
||||
@@ -143,7 +143,7 @@ introspect the live Agent SDK version — but the router runs in Node, so it
|
||||
resolves the version itself (#2590), in this order:
|
||||
|
||||
1. an explicit `--agent-sdk-version <ver>` (pin a version),
|
||||
2. `GSD_AGENT_SDK_VERSION`,
|
||||
2. `MSD_AGENT_SDK_VERSION`,
|
||||
3. the **installed** `@anthropic-ai/claude-agent-sdk` package version, read from
|
||||
its `package.json` on disk by walking `node_modules` up the tree. (Read
|
||||
directly rather than via `require.resolve`: the SDK's `exports` map does not
|
||||
@@ -152,7 +152,7 @@ resolves the version itself (#2590), in this order:
|
||||
|
||||
Previously nothing computed this at all, so gate 5 returned
|
||||
`agent_sdk_version_unknown` on **every** automated run and the Workflow backend
|
||||
could never activate — while `gsd-tools capability state` still reported the
|
||||
could never activate — while `msd-tools capability state` still reported the
|
||||
capability `active: true`. Fail-closed is preserved: when no version can be
|
||||
resolved, gate 5 still declines to `inline`. What changed is that a resolvable
|
||||
version is now actually found, so a genuinely-too-old SDK reports
|
||||
@@ -160,15 +160,15 @@ version is now actually found, so a genuinely-too-old SDK reports
|
||||
|
||||
**If `backend == "workflow"`:** run the emitted `script` via the Workflow tool
|
||||
for THIS wave instead of the per-message `Agent()` loop in step 3. The script
|
||||
composes the SAME `gsd-executor` agent type the inline path uses, with
|
||||
composes the SAME `msd-executor` agent type the inline path uses, with
|
||||
worktree isolation applied PER PLAN from the manifest's `use_worktree` field
|
||||
(see `emitWorkflowScript`):
|
||||
|
||||
- **waves → one or more sequential `parallel()` barriers** — each wave is a
|
||||
barrier group; when plans within a wave share `files_modified`, they are split
|
||||
into separate sequential stages within that wave's barrier.
|
||||
- **plans → `agent(brief, { agentType: 'gsd-executor', isolation: 'worktree' })`**
|
||||
when `use_worktree` is not `false`, or `agent(brief, { agentType: 'gsd-executor' })`
|
||||
- **plans → `agent(brief, { agentType: 'msd-executor', isolation: 'worktree' })`**
|
||||
when `use_worktree` is not `false`, or `agent(brief, { agentType: 'msd-executor' })`
|
||||
(no isolation) when it is — so the produced `SUMMARY.md` and commits are
|
||||
identical to inline dispatch, INCLUDING the inline path's submodule safety
|
||||
gate (#2772 / #2285 finding 1).
|
||||
@@ -194,7 +194,7 @@ unchanged:
|
||||
|
||||
```bash
|
||||
if [ -z "${WAVE_WORKTREE_MANIFEST:-}" ]; then
|
||||
M=$(mktemp "${TMPDIR:-/tmp}/gsd-worktree-wave-XXXXXX") && mv "$M" "$M.json" && WAVE_WORKTREE_MANIFEST="$M.json" || exit 1 # XXXXXX must be path-final on BSD/macOS (#1520)
|
||||
M=$(mktemp "${TMPDIR:-/tmp}/msd-worktree-wave-XXXXXX") && mv "$M" "$M.json" && WAVE_WORKTREE_MANIFEST="$M.json" || exit 1 # XXXXXX must be path-final on BSD/macOS (#1520)
|
||||
# Persist the dispatch-time orchestrator worktree root so wave-cleanup pins back
|
||||
# to the orchestrator's OWN worktree (#630), exactly as inline dispatch does.
|
||||
ORCH_ROOT=$(git rev-parse --show-toplevel)
|
||||
@@ -208,7 +208,7 @@ unchanged:
|
||||
per dispatched plan: `{ plan, expects_worktree, metadata }`. `metadata` is that
|
||||
plan's executor `<worktree_metadata>` JSON (`{agent_id, worktree_path, branch,
|
||||
expected_base}` — captured by the executor itself per
|
||||
`agents/gsd-executor.md`), or `null` when the agent's result carried none
|
||||
`agents/msd-executor.md`), or `null` when the agent's result carried none
|
||||
(interrupted agent, resumed-from-cache plan, or a non-worktree plan).
|
||||
|
||||
3. **Record every worktree plan** exactly as inline dispatch does at step 3's
|
||||
@@ -216,7 +216,7 @@ unchanged:
|
||||
with `expects_worktree: true` and complete metadata:
|
||||
|
||||
```bash
|
||||
gsd_run query worktree.record-agent --manifest "$WAVE_WORKTREE_MANIFEST" \
|
||||
msd_run query worktree.record-agent --manifest "$WAVE_WORKTREE_MANIFEST" \
|
||||
--agent-id "<metadata.agent_id>" --path "<metadata.worktree_path>" \
|
||||
--branch "<metadata.branch>" --base "<metadata.expected_base>" \
|
||||
--files "<plan files_modified, space-separated>" \
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
## Ownership declaration
|
||||
|
||||
The `gsd-ultraplan-phase` plan-offload surface (offloading GSD's plan phase to
|
||||
The `msd-ultraplan-phase` plan-offload surface (offloading MSD's plan phase to
|
||||
Claude Code's ultraplan cloud) is **owned by this capability**, not by a
|
||||
standalone BETA skill. Both surfaces share one runtime gate
|
||||
(`claude_orchestration.enabled`), one BETA boundary, and one Claude-Code-only
|
||||
@@ -14,15 +14,15 @@ detection seam.
|
||||
## When the planner should consider ultraplan offload
|
||||
|
||||
When this contribution is active (capability enabled, Claude Code runtime), the
|
||||
planner MAY offer the `/gsd-ultraplan-phase` path as an alternative to local
|
||||
`/gsd-plan-phase` for phases where cloud-assisted planning adds value. This is
|
||||
planner MAY offer the `/msd-ultraplan-phase` path as an alternative to local
|
||||
`/msd-plan-phase` for phases where cloud-assisted planning adds value. This is
|
||||
advisory, not mandatory — the stable local planner remains the default.
|
||||
|
||||
## Fallback contract
|
||||
|
||||
If the capability is disabled, or the runtime is not Claude Code, ultraplan
|
||||
offload is **not surfaced** and the planner proceeds with the standard local
|
||||
`/gsd-plan-phase`. The `gsd-ultraplan-phase` command itself remains installed
|
||||
`/msd-plan-phase`. The `msd-ultraplan-phase` command itself remains installed
|
||||
(its own runtime gate already no-ops on non-Claude runtimes); this contribution
|
||||
only governs whether the capability manifest advertises it as part of the
|
||||
orchestration surface.
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClaudeSkill"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -105,15 +105,15 @@
|
||||
"local": "settings.local.json",
|
||||
"global": "settings.json"
|
||||
},
|
||||
"sourceMarkerFile": ".gsd-source",
|
||||
"sourceMarkerFile": ".msd-source",
|
||||
"agentFrontmatterExtensions": [
|
||||
"effort"
|
||||
],
|
||||
"ownsClaudePaths": true,
|
||||
"nativeModelAliases": true,
|
||||
"skillsGlobalOnboarding": true,
|
||||
"legacyCommandsGsdInstallMigration": true,
|
||||
"legacyCommandsGsdUninstall": "global",
|
||||
"legacyCommandsMsdInstallMigration": true,
|
||||
"legacyCommandsMsdUninstall": "global",
|
||||
"hyphenNameAgentBody": true
|
||||
}
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClineSkill"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToClineAgent"
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToClineAgent"
|
||||
@@ -82,7 +82,7 @@
|
||||
"effortSurface": "undocumented"
|
||||
},
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "/gsd-update --reapply",
|
||||
"reapplyCommand": "/msd-update --reapply",
|
||||
"frontmatterDialect": "cline",
|
||||
"skipSharedHooksInstall": true,
|
||||
"localTargetIsProjectRoot": true,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -19,8 +19,8 @@
|
||||
"code-review"
|
||||
],
|
||||
"agents": [
|
||||
"gsd-code-reviewer",
|
||||
"gsd-code-fixer"
|
||||
"msd-code-reviewer",
|
||||
"msd-code-fixer"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCodebuddyCommand"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCodebuddySkill"
|
||||
@@ -40,7 +40,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCodebuddyAgent"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCodebuddyCommand"
|
||||
@@ -58,7 +58,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCodebuddySkill"
|
||||
@@ -66,7 +66,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCodebuddyAgent"
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "reviewer",
|
||||
"version": "1.14.0",
|
||||
"title": "CodeRabbit",
|
||||
"description": "CodeRabbit CLI — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). Reviews the working-tree diff (`coderabbit review --prompt-only`), not the source tree, and accepts neither a prompt nor a model flag; findings are down-weighted in consensus (evidenceClass: diff-only).",
|
||||
"description": "CodeRabbit CLI — cross-AI /msd:review reviewer lane only; not a MSD install target (no runtime body, no artifacts). Reviews the working-tree diff (`coderabbit review --prompt-only`), not the source tree, and accepts neither a prompt nor a model flag; findings are down-weighted in consensus (evidenceClass: diff-only).",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.8.0"
|
||||
"msd": ">=1.8.0"
|
||||
},
|
||||
"reviewer": {
|
||||
"slug": "coderabbit",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCodexSkill",
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCodexAgent"
|
||||
@@ -43,7 +43,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCodexSkill"
|
||||
@@ -51,7 +51,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCodexAgent"
|
||||
@@ -105,7 +105,7 @@
|
||||
"modelFlag": "--model"
|
||||
},
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "$gsd-update --reapply",
|
||||
"reapplyCommand": "$msd-update --reapply",
|
||||
"tomlConfigInstall": true,
|
||||
"cleanupSkillSidecars": true,
|
||||
"agentTomlFiles": true,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -25,7 +25,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCopilotSkill"
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCopilotAgent"
|
||||
@@ -43,7 +43,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToCopilotSkill"
|
||||
@@ -51,7 +51,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCopilotAgent"
|
||||
@@ -91,7 +91,7 @@
|
||||
"effortSurface": "undocumented"
|
||||
},
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "/gsd-update --reapply",
|
||||
"reapplyCommand": "/msd-update --reapply",
|
||||
"agentFileExtension": ".agent.md",
|
||||
"skipSharedHooksInstall": true,
|
||||
"noPathRewrite": true
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": true,
|
||||
"converter": "convertClaudeCommandToCursorSkill"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCursorAgent"
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": true,
|
||||
"converter": "convertClaudeCommandToCursorSkill"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToCursorAgent"
|
||||
@@ -92,14 +92,14 @@
|
||||
},
|
||||
"harnessIsolationFlag": "--worktree",
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "gsd-update --reapply (mention the skill name)",
|
||||
"reapplyCommand": "msd-update --reapply (mention the skill name)",
|
||||
"frontmatterDialect": "cursor",
|
||||
"hooksJsonSurface": true,
|
||||
"skipSharedHooksInstall": true,
|
||||
"retiredArtifacts": [
|
||||
{
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"suffix": ".md"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -31,7 +31,7 @@
|
||||
"auto-remap"
|
||||
],
|
||||
"default": "warn",
|
||||
"description": "Action taken by the codebase drift gate when the threshold is exceeded: warn (advisory message) or auto-remap (spawn gsd-codebase-mapper agent to refresh STRUCTURE.md)."
|
||||
"description": "Action taken by the codebase drift gate when the threshold is exceeded: warn (advisory message) or auto-remap (spawn msd-codebase-mapper agent to refresh STRUCTURE.md)."
|
||||
},
|
||||
"workflow.schema_drift_gate": {
|
||||
"type": "boolean",
|
||||
@@ -41,12 +41,12 @@
|
||||
"workflow.plan_drift_precheck": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Enable the non-blocking codebase drift pre-check at plan:pre, before /gsd:plan-phase spawns the planner. When enabled, a stale STRUCTURE.md (structural additions exceeding drift_threshold) is surfaced up front as a warn-only advisory pointing to /gsd:map-codebase; it never blocks planning and never spawns the mapper agent. Separate from schema_drift_gate so autonomous/CI runs can silence the plan-time advisory while keeping the execute:wave:post gates enabled."
|
||||
"description": "Enable the non-blocking codebase drift pre-check at plan:pre, before /msd:plan-phase spawns the planner. When enabled, a stale STRUCTURE.md (structural additions exceeding drift_threshold) is surfaced up front as a warn-only advisory pointing to /msd:map-codebase; it never blocks planning and never spawns the mapper agent. Separate from schema_drift_gate so autonomous/CI runs can silence the plan-time advisory while keeping the execute:wave:post gates enabled."
|
||||
},
|
||||
"workflow.context_drift_precheck": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Enable the non-blocking context-drift pre-check at plan:pre, before /gsd:plan-phase reuses an existing RESEARCH.md/PATTERNS.md/VALIDATION.md/SPEC.md. Compares each artifact's effective last-changed time (git commit time, falling back to mtime for uncommitted edits) against CONTEXT.md's own — an artifact that predates CONTEXT.md's newest decision was derived from a premise that has since changed. Warn-only by default (see workflow.context_drift_action); never blocks planning on its own."
|
||||
"description": "Enable the non-blocking context-drift pre-check at plan:pre, before /msd:plan-phase reuses an existing RESEARCH.md/PATTERNS.md/VALIDATION.md/SPEC.md. Compares each artifact's effective last-changed time (git commit time, falling back to mtime for uncommitted edits) against CONTEXT.md's own — an artifact that predates CONTEXT.md's newest decision was derived from a premise that has since changed. Warn-only by default (see workflow.context_drift_action); never blocks planning on its own."
|
||||
},
|
||||
"workflow.context_drift_action": {
|
||||
"type": "enum",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.7.0"
|
||||
"msd": ">=1.7.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -35,17 +35,17 @@
|
||||
"external_job.artifact_dir": {
|
||||
"type": "string",
|
||||
"default": "Artifacts/jobs",
|
||||
"description": "Root for per-job artifact directories (e.g. Artifacts/jobs/<jobid>/). Avoids fixed log paths and hardcoding a cluster/project layout. Surfaced by the adapter (`slurm-adapter.cjs submit` prints the resolved value); override via GSD_EXTERNAL_JOB_ARTIFACT_DIR."
|
||||
"description": "Root for per-job artifact directories (e.g. Artifacts/jobs/<jobid>/). Avoids fixed log paths and hardcoding a cluster/project layout. Surfaced by the adapter (`slurm-adapter.cjs submit` prints the resolved value); override via MSD_EXTERNAL_JOB_ARTIFACT_DIR."
|
||||
},
|
||||
"external_job.submit_timeout_ms": {
|
||||
"type": "number",
|
||||
"default": 30000,
|
||||
"description": "Hard timeout (ms) for the scheduler submit subprocess (e.g. sbatch). Bounded per CLAUDE.md unbounded-subprocess policy. Read by the adapter (env GSD_SLURM_SUBMIT_TIMEOUT_MS overrides)."
|
||||
"description": "Hard timeout (ms) for the scheduler submit subprocess (e.g. sbatch). Bounded per CLAUDE.md unbounded-subprocess policy. Read by the adapter (env MSD_SLURM_SUBMIT_TIMEOUT_MS overrides)."
|
||||
},
|
||||
"external_job.poll_timeout_ms": {
|
||||
"type": "number",
|
||||
"default": 15000,
|
||||
"description": "Hard timeout (ms) for the scheduler poll subprocess (squeue, with sacct fallback). Read by the adapter (env GSD_SLURM_POLL_TIMEOUT_MS overrides)."
|
||||
"description": "Hard timeout (ms) for the scheduler poll subprocess (squeue, with sacct fallback). Read by the adapter (env MSD_SLURM_POLL_TIMEOUT_MS overrides)."
|
||||
}
|
||||
},
|
||||
"steps": [],
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "standard",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Knowledge graph",
|
||||
"description": "Build, query, and inspect the project knowledge graph in `.planning/graphs/`; exposes graphify CLI subcommands (build, query, status, diff) and the /gsd-graphify skill.",
|
||||
"description": "Build, query, and inspect the project knowledge graph in `.planning/graphs/`; exposes graphify CLI subcommands (build, query, status, diff) and the /msd-graphify skill.",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "runtime",
|
||||
"version": "1.14.0",
|
||||
"title": "Hermes Agent",
|
||||
"description": "Hermes Agent (NousResearch) — skills nest under skills/gsd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
||||
"description": "Hermes Agent (NousResearch) — skills nest under skills/msd/ category bucket; nested skill layout; settings-json hook surface; Claude hook event dialect; tier-2 support.",
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -23,8 +23,8 @@
|
||||
"global": [
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills/gsd",
|
||||
"prefix": "gsd-",
|
||||
"destSubpath": "skills/msd",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClaudeSkill"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToHermesAgent"
|
||||
@@ -41,8 +41,8 @@
|
||||
"local": [
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills/gsd",
|
||||
"prefix": "gsd-",
|
||||
"destSubpath": "skills/msd",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClaudeSkill"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToHermesAgent"
|
||||
@@ -73,19 +73,19 @@
|
||||
"extensionEvents": "hermes",
|
||||
"hostBehaviors": {
|
||||
"skillFrontmatterVersion": true,
|
||||
"skillsManifestPrefix": "skills/gsd/",
|
||||
"skillsManifestPrefix": "skills/msd/",
|
||||
"trackCategoryDescription": true,
|
||||
"writeCategoryDescription": true,
|
||||
"reportSkillsCount": true,
|
||||
"legacyCommandsGsdCleanup": true,
|
||||
"legacyCommandsMsdCleanup": true,
|
||||
"brandingRewrites": {
|
||||
"CLAUDE.md": "HERMES.md",
|
||||
"Claude Code": "Hermes Agent",
|
||||
".claude/": ".hermes/"
|
||||
},
|
||||
"reapplyCommand": "gsd-update --reapply (mention the skill name)",
|
||||
"legacyCommandsGsdInstallMigration": true,
|
||||
"legacyCommandsGsdUninstall": true,
|
||||
"reapplyCommand": "msd-update --reapply (mention the skill name)",
|
||||
"legacyCommandsMsdInstallMigration": true,
|
||||
"legacyCommandsMsdUninstall": true,
|
||||
"hyphenNameAgentBody": true
|
||||
},
|
||||
"hostIntegration": {
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Codebase intelligence",
|
||||
"description": "Code-intelligence store for codebase querying, diff, snapshot, and API-surface extraction; exposes `gsd-tools intel` subcommands (query, status, update, diff, snapshot, patch-meta, validate, extract-exports, api-surface) and backs `/gsd-map-codebase` and `gsd-intel-updater`.",
|
||||
"description": "Code-intelligence store for codebase querying, diff, snapshot, and API-surface extraction; exposes `msd-tools intel` subcommands (query, status, update, diff, snapshot, patch-meta, validate, extract-exports, api-surface) and backs `/msd-map-codebase` and `msd-intel-updater`.",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -31,7 +31,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "command",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -39,7 +39,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": true,
|
||||
"converter": "convertClaudeCommandToKiloSkill"
|
||||
@@ -47,7 +47,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeToKiloFrontmatter"
|
||||
@@ -57,7 +57,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "command",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -65,7 +65,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": true,
|
||||
"converter": "convertClaudeCommandToKiloSkill"
|
||||
@@ -73,7 +73,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeToKiloFrontmatter"
|
||||
@@ -114,15 +114,15 @@
|
||||
"effortSurface": "undocumented"
|
||||
},
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "/gsd-update --reapply",
|
||||
"reapplyCommand": "/msd-update --reapply",
|
||||
"attributionConfigResolver": "kilo",
|
||||
"flatCommandDir": "command",
|
||||
"combinedFamilyInstall": true,
|
||||
"frontmatterDialect": "kilo",
|
||||
"nativePlugin": {
|
||||
"dir": "plugins",
|
||||
"file": "gsd-core.js",
|
||||
"source": ".kilo/plugins/gsd-core.js"
|
||||
"file": "msd-core.js",
|
||||
"source": ".kilo/plugins/msd-core.js"
|
||||
},
|
||||
"skipUpdateBannerCommand": true
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.7.0"
|
||||
"msd": ">=1.7.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -28,7 +28,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToKimiCodeSkill"
|
||||
@@ -36,7 +36,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -46,7 +46,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -102,7 +102,7 @@
|
||||
"promptFlag": "--prompt"
|
||||
},
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "/skill:gsd-update --reapply",
|
||||
"reapplyCommand": "/skill:msd-update --reapply",
|
||||
"localInstallDeferred": true,
|
||||
"verificationStyle": "kimi-code",
|
||||
"agentManifestStyle": "none",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -29,7 +29,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToKimiSkill"
|
||||
@@ -37,7 +37,7 @@
|
||||
{
|
||||
"kind": "kimi-agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd",
|
||||
"prefix": "msd",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -92,7 +92,7 @@
|
||||
"promptFlag": "--prompt"
|
||||
},
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "/skill:gsd-update --reapply",
|
||||
"reapplyCommand": "/skill:msd-update --reapply",
|
||||
"localInstallDeferred": true,
|
||||
"verificationStyle": "kimi",
|
||||
"agentManifestStyle": "kimi-nested",
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Live-DOM UAT",
|
||||
"description": "Default-off live-DOM verification (#2856). Confines browser MCP reach to one purpose-built agent (gsd-dom-verifier) that carries the browser globs in its own tools: line, registered as an additive step hook at execute:wave:post. agents/gsd-executor.md is deliberately NOT widened: for a first-party agent the static tool list is the only control that exists, no capability can grant tools to one (ADR-1244 D2), no hook kind grants tool permissions (ADR-857 D4), and there is no per-dispatch tool override. Gated by activationKey workflow.live_dom_uat (default false), so with the key off the capability resolves inactive and the hook does not render at all. NOTE on the browser profile lock: chrome-devtools-mcp holds an exclusive lock on $HOME/.cache/chrome-devtools-mcp/chrome-profile, and --isolated is a flag on the user's own MCP-server registration that GSD cannot pass. Concurrent execution waves sharing one profile will therefore collide; the step tolerates and reports that (onError: skip, never blocking) rather than pretending to coordinate a resource it does not own.",
|
||||
"description": "Default-off live-DOM verification (#2856). Confines browser MCP reach to one purpose-built agent (msd-dom-verifier) that carries the browser globs in its own tools: line, registered as an additive step hook at execute:wave:post. agents/msd-executor.md is deliberately NOT widened: for a first-party agent the static tool list is the only control that exists, no capability can grant tools to one (ADR-1244 D2), no hook kind grants tool permissions (ADR-857 D4), and there is no per-dispatch tool override. Gated by activationKey workflow.live_dom_uat (default false), so with the key off the capability resolves inactive and the hook does not render at all. NOTE on the browser profile lock: chrome-devtools-mcp holds an exclusive lock on $HOME/.cache/chrome-devtools-mcp/chrome-profile, and --isolated is a flag on the user's own MCP-server registration that MSD cannot pass. Concurrent execution waves sharing one profile will therefore collide; the step tolerates and reports that (onError: skip, never blocking) rather than pretending to coordinate a resource it does not own.",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.11.0"
|
||||
"msd": ">=1.11.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -17,14 +17,14 @@
|
||||
},
|
||||
"skills": [],
|
||||
"agents": [
|
||||
"gsd-dom-verifier"
|
||||
"msd-dom-verifier"
|
||||
],
|
||||
"activationKey": "workflow.live_dom_uat",
|
||||
"config": {
|
||||
"workflow.live_dom_uat": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Enable live-DOM verification. Default-off: browser MCP reach is opt-in per project. When on, the orchestrator's automated UI verification may additionally use mcp__chrome-devtools__* / mcp__claude-in-chrome__* when present, and a gsd-dom-verifier step runs after each execution wave. When off, neither surface reaches a browser and the pre-existing mcp__playwright__* path is unchanged."
|
||||
"description": "Enable live-DOM verification. Default-off: browser MCP reach is opt-in per project. When on, the orchestrator's automated UI verification may additionally use mcp__chrome-devtools__* / mcp__claude-in-chrome__* when present, and a msd-dom-verifier step runs after each execution wave. When off, neither surface reaches a browser and the pre-existing mcp__playwright__* path is unchanged."
|
||||
}
|
||||
},
|
||||
"hooks": [],
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"point": "execute:wave:post",
|
||||
"ref": {
|
||||
"agent": "gsd-dom-verifier"
|
||||
"agent": "msd-dom-verifier"
|
||||
},
|
||||
"fragment": {
|
||||
"path": "fragments/execute-wave-post.md"
|
||||
|
||||
@@ -34,8 +34,8 @@ If you see that, or any equivalent lock error:
|
||||
1. Record `outcome: could_not_look` and `reason: profile_locked`.
|
||||
2. Name `--isolated` in the notes, so the operator knows the remedy is a flag on THEIR MCP
|
||||
server registration.
|
||||
3. **Stop.** Do not retry, do not loop, do not wait for the lock. GSD cannot pass
|
||||
`--isolated` — it is not GSD's flag — and a retry loop here just holds up the wave.
|
||||
3. **Stop.** Do not retry, do not loop, do not wait for the lock. MSD cannot pass
|
||||
`--isolated` — it is not MSD's flag — and a retry loop here just holds up the wave.
|
||||
|
||||
Parallel execution waves sharing one profile WILL hit this. It is an expected condition,
|
||||
not a defect, and it is not a reason to fail anything.
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "reviewer",
|
||||
"version": "1.14.0",
|
||||
"title": "llama.cpp",
|
||||
"description": "llama.cpp server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.llama_cpp_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`llama-cpp`, required by KEBAB_RE); `reviewer.slug` stays snake (`llama_cpp`) to match the shipped roster and the `review.llama_cpp_host` config key (ADR-2782's three-namespace trap).",
|
||||
"description": "llama.cpp server — cross-AI /msd:review reviewer lane only; not a MSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.llama_cpp_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`llama-cpp`, required by KEBAB_RE); `reviewer.slug` stays snake (`llama_cpp`) to match the shipped roster and the `review.llama_cpp_host` config key (ADR-2782's three-namespace trap).",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.8.0"
|
||||
"msd": ">=1.8.0"
|
||||
},
|
||||
"reviewer": {
|
||||
"slug": "llama_cpp",
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "reviewer",
|
||||
"version": "1.14.0",
|
||||
"title": "LM Studio",
|
||||
"description": "LM Studio local model server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.lm_studio_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`lm-studio`, required by KEBAB_RE); `reviewer.slug` stays snake (`lm_studio`) to match the shipped roster and the `review.lm_studio_host` config key (ADR-2782's three-namespace trap).",
|
||||
"description": "LM Studio local model server — cross-AI /msd:review reviewer lane only; not a MSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.lm_studio_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq. Capability id/folder are kebab (`lm-studio`, required by KEBAB_RE); `reviewer.slug` stays snake (`lm_studio`) to match the shipped roster and the `review.lm_studio_host` config key (ADR-2782's three-namespace trap).",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.8.0"
|
||||
"msd": ">=1.8.0"
|
||||
},
|
||||
"reviewer": {
|
||||
"slug": "lm_studio",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -20,7 +20,7 @@
|
||||
"mempalace-capture"
|
||||
],
|
||||
"agents": [
|
||||
"gsd-mempalace-curator"
|
||||
"msd-mempalace-curator"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
@@ -37,7 +37,7 @@
|
||||
"replace"
|
||||
],
|
||||
"default": "augment",
|
||||
"description": "How MemPalace relates to GSD native memory during recall/capture. 'augment' (default): the palace is an additive layer alongside .planning/graphs/ — native memory stays authoritative. 'kg_backend': knowledge-graph queries resolve against the palace's temporal KG as the primary source, with .planning/graphs/ as fallback. 'replace': recall resolves through the palace as the source of truth, native memory as fallback. Every mode stays onError:skip and default-resilient — an unreachable palace degrades to native memory, and GSD keeps writing .planning/graphs/ so no memory is lost. Cross-mode migration of existing .planning/graphs/ into the palace is a separate, not-yet-implemented concern."
|
||||
"description": "How MemPalace relates to MSD native memory during recall/capture. 'augment' (default): the palace is an additive layer alongside .planning/graphs/ — native memory stays authoritative. 'kg_backend': knowledge-graph queries resolve against the palace's temporal KG as the primary source, with .planning/graphs/ as fallback. 'replace': recall resolves through the palace as the source of truth, native memory as fallback. Every mode stays onError:skip and default-resilient — an unreachable palace degrades to native memory, and MSD keeps writing .planning/graphs/ so no memory is lost. Cross-mode migration of existing .planning/graphs/ into the palace is a separate, not-yet-implemented concern."
|
||||
},
|
||||
"mempalace.wing": {
|
||||
"type": "string",
|
||||
@@ -134,7 +134,7 @@
|
||||
{
|
||||
"point": "ship:post",
|
||||
"ref": {
|
||||
"agent": "gsd-mempalace-curator"
|
||||
"agent": "msd-mempalace-curator"
|
||||
},
|
||||
"produces": [],
|
||||
"consumes": [
|
||||
|
||||
@@ -13,8 +13,8 @@ For each confirmed bug/issue resolved in this wave:
|
||||
|
||||
1. **Resolve the wing** (`mempalace.wing`, else `project_code`, else project dir) and target `room: problems`.
|
||||
2. **Dedupe first.** Call `mempalace_check_duplicate` (interactive) before filing so re-runs don't create duplicate drawers.
|
||||
3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: stage the artifact under the `problems/` folder and run `mempalace mine --daemon --background` (no `--room` flag; the background queue defers the write when another writer holds the palace lock, #4700 — see [CLI reference](https://mempalaceofficial.com/reference/cli.html); room assignment is via `detect_room()` folder-path match per the [mining guide](https://mempalaceofficial.com/guide/mining.html); use the same staging pattern documented in `gsd-mempalace-capture` Step 3). Include provenance (`source_file`, phase id).
|
||||
3. **File the drawer verbatim.** Store the problem statement and its fix as a drawer in `room: problems` — interactive: `mempalace_add_drawer`; headless: stage the artifact under the `problems/` folder and run `mempalace mine --daemon --background` (no `--room` flag; the background queue defers the write when another writer holds the palace lock, #4700 — see [CLI reference](https://mempalaceofficial.com/reference/cli.html); room assignment is via `detect_room()` folder-path match per the [mining guide](https://mempalaceofficial.com/guide/mining.html); use the same staging pattern documented in `msd-mempalace-capture` Step 3). Include provenance (`source_file`, phase id).
|
||||
4. **Mirror the KG fact** when `mempalace.mirror_kg` is on: add `(<bug>, fixed_by, <fix>)` with `valid_from` = the phase date via `mempalace_kg_add`.
|
||||
5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; GSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.
|
||||
5. **Mode awareness** (`mempalace.memory_mode`). Under `augment` the fact is an *additive* mirror alongside `.planning/graphs/`. Under `kg_backend`/`replace` the palace is the *authoritative* store for the fact; MSD still writes `.planning/graphs/` through its normal graphify, so an unreachable palace never loses it.
|
||||
|
||||
Captures are idempotent: deterministic drawer IDs + `check_duplicate` mean re-running the wave re-files the same content without duplication. On any error, skip and let the wave complete normally.
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -19,7 +19,7 @@
|
||||
"validate-phase"
|
||||
],
|
||||
"agents": [
|
||||
"gsd-nyquist-auditor"
|
||||
"msd-nyquist-auditor"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "reviewer",
|
||||
"version": "1.14.0",
|
||||
"title": "Ollama",
|
||||
"description": "Ollama local model server — cross-AI /gsd:review reviewer lane only; not a GSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.ollama_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq.",
|
||||
"description": "Ollama local model server — cross-AI /msd:review reviewer lane only; not a MSD install target (no runtime body, no artifacts). OpenAI-compatible HTTP transport against a user-configured `review.ollama_host` (POST /v1/chat/completions); model discovered via GET /v1/models piped through jq.",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.8.0"
|
||||
"msd": ">=1.8.0"
|
||||
},
|
||||
"reviewer": {
|
||||
"slug": "ollama",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -26,7 +26,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -34,7 +34,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": true,
|
||||
"converter": "convertClaudeCommandToOpencodeSkill"
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeToOpencodeFrontmatter"
|
||||
@@ -52,7 +52,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -60,7 +60,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": true,
|
||||
"converter": "convertClaudeCommandToOpencodeSkill"
|
||||
@@ -68,7 +68,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeToOpencodeFrontmatter"
|
||||
@@ -117,15 +117,15 @@
|
||||
"promptFlag": null
|
||||
},
|
||||
"hostBehaviors": {
|
||||
"reapplyCommand": "/gsd-update --reapply",
|
||||
"reapplyCommand": "/msd-update --reapply",
|
||||
"attributionConfigResolver": "opencode",
|
||||
"flatCommandDir": "commands",
|
||||
"combinedFamilyInstall": true,
|
||||
"frontmatterDialect": "opencode",
|
||||
"nativePlugin": {
|
||||
"dir": "plugins",
|
||||
"file": "gsd-core.js",
|
||||
"source": ".opencode/plugins/gsd-core.js"
|
||||
"file": "msd-core.js",
|
||||
"source": ".opencode/plugins/msd-core.js"
|
||||
},
|
||||
"skipHomePrefixSubstitution": true,
|
||||
"skipSettingsUi": true,
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"research"
|
||||
],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -19,7 +19,7 @@
|
||||
},
|
||||
"skills": [],
|
||||
"agents": [
|
||||
"gsd-pattern-mapper"
|
||||
"msd-pattern-mapper"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"point": "plan:pre",
|
||||
"ref": {
|
||||
"agent": "gsd-pattern-mapper"
|
||||
"agent": "msd-pattern-mapper"
|
||||
},
|
||||
"fragment": {
|
||||
"path": "fragments/plan-pre.md"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
**Padded phase:** {padded_phase}
|
||||
|
||||
<required_reading>
|
||||
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
|
||||
- {context_path} (USER DECISIONS from /msd:discuss-phase)
|
||||
- {research_path} (Technical Research)
|
||||
</required_reading>
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "runtime",
|
||||
"version": "1.14.0",
|
||||
"title": "pi",
|
||||
"description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/gsd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.",
|
||||
"description": "pi (pi.dev) — bun-runtime programmatic-CLI; TS ExtensionAPI (registerCommand/registerTool/registerProvider/pi.on); single native-extension file at ~/.pi/agent/extensions/msd.js (.js, not .cjs — pi's extension auto-discovery accepts only .ts/.js, #2470); no shared-settings hook surface; tier-2 support.",
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.7.0"
|
||||
"msd": ">=1.7.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -60,11 +60,11 @@
|
||||
"hostBehaviors": {
|
||||
"nativePlugin": {
|
||||
"dir": "extensions",
|
||||
"file": "gsd.js",
|
||||
"source": "pi/gsd.cjs"
|
||||
"file": "msd.js",
|
||||
"source": "pi/msd.cjs"
|
||||
},
|
||||
"pluginOnlyInstall": true,
|
||||
"sharedHooksDirName": "gsd-hooks"
|
||||
"sharedHooksDirName": "msd-hooks"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Developer profiling pipeline",
|
||||
"description": "Developer behavioral profiling from Claude Code session history; scans session JSONL files, extracts and samples user messages, and generates profile artifacts (USER-PROFILE.md, dev-preferences.md, CLAUDE.md sections). Exposes eight `gsd-tools` commands: scan-sessions, extract-messages, profile-sample (pipeline phase) and write-profile, profile-questionnaire, generate-dev-preferences, generate-claude-profile, generate-claude-md (output phase). Backs the /gsd-profile-user skill and gsd-user-profiler agent.",
|
||||
"description": "Developer behavioral profiling from Claude Code session history; scans session JSONL files, extracts and samples user messages, and generates profile artifacts (USER-PROFILE.md, dev-preferences.md, CLAUDE.md sections). Exposes eight `msd-tools` commands: scan-sessions, extract-messages, profile-sample (pipeline phase) and write-profile, profile-questionnaire, generate-dev-preferences, generate-claude-profile, generate-claude-md (output phase). Backs the /msd-profile-user skill and msd-user-profiler agent.",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -19,7 +19,7 @@
|
||||
"profile-user"
|
||||
],
|
||||
"agents": [
|
||||
"gsd-user-profiler"
|
||||
"msd-user-profiler"
|
||||
],
|
||||
"config": {
|
||||
"profile-pipeline.enabled": {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClaudeSkill"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToQwenAgent"
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClaudeSkill"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToQwenAgent"
|
||||
@@ -102,9 +102,9 @@
|
||||
"Claude Code": "Qwen Code",
|
||||
".claude/": ".qwen/"
|
||||
},
|
||||
"legacyCommandsGsdCleanup": true,
|
||||
"legacyCommandsGsdInstallMigration": true,
|
||||
"legacyCommandsGsdUninstall": true,
|
||||
"legacyCommandsMsdCleanup": true,
|
||||
"legacyCommandsMsdInstallMigration": true,
|
||||
"legacyCommandsMsdUninstall": true,
|
||||
"hyphenNameAgentBody": true
|
||||
}
|
||||
},
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
"role": "feature",
|
||||
"version": "1.14.0",
|
||||
"title": "Complexity-triggered refactor",
|
||||
"description": "Measures the complexity of the code a phase touched and, when a function crosses a configured threshold or jumps past its recorded anchor, surfaces a scoped refactor proposal at .planning/phases/<N>/<NN>-REFACTOR.md. Advisory by default — it never edits code and never blocks. Opt-in strict mode blocks /gsd-ship while a proposal is untriaged; a declined proposal is recorded in the broken-windows ledger when that capability is present. Operationalizes 'refactor early, refactor often' as continuous pressure instead of a thing you have to remember (issue #1953).",
|
||||
"description": "Measures the complexity of the code a phase touched and, when a function crosses a configured threshold or jumps past its recorded anchor, surfaces a scoped refactor proposal at .planning/phases/<N>/<NN>-REFACTOR.md. Advisory by default — it never edits code and never blocks. Opt-in strict mode blocks /msd-ship while a proposal is untriaged; a declined proposal is recorded in the broken-windows ledger when that capability is present. Operationalizes 'refactor early, refactor often' as continuous pressure instead of a thing you have to remember (issue #1953).",
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.10.0"
|
||||
"msd": ">=1.10.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -37,7 +37,7 @@
|
||||
"refactor.trigger_strict": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Record an untriaged refactor proposal as an open `deviation` entry in the broken-windows ledger, so it becomes a tracked task that must be resolved before ship. Off by default and deliberately so: a blocking complexity number is a metric an executor can satisfy by splitting one coherent function into two incoherent ones, so the entry clears on the proposal being DISPOSITIONED (gsd-tools refactor accept|decline), never on the score improving. Ship blocking is the broken-windows capability's existing ship:pre gate — enable it with workflow.windows_enforce. With broken-windows absent, strict mode still records the proposal locally and says so; it cannot block on its own. Advisory mode (the default) surfaces the same proposal and tracks nothing."
|
||||
"description": "Record an untriaged refactor proposal as an open `deviation` entry in the broken-windows ledger, so it becomes a tracked task that must be resolved before ship. Off by default and deliberately so: a blocking complexity number is a metric an executor can satisfy by splitting one coherent function into two incoherent ones, so the entry clears on the proposal being DISPOSITIONED (msd-tools refactor accept|decline), never on the score improving. Ship blocking is the broken-windows capability's existing ship:pre gate — enable it with workflow.windows_enforce. With broken-windows absent, strict mode still records the proposal locally and says so; it cannot block on its own. Advisory mode (the default) surfaces the same proposal and tracks nothing."
|
||||
}
|
||||
},
|
||||
"commands": [
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "standard",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -17,7 +17,7 @@
|
||||
},
|
||||
"skills": [],
|
||||
"agents": [
|
||||
"gsd-phase-researcher"
|
||||
"msd-phase-researcher"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
@@ -31,7 +31,7 @@
|
||||
{
|
||||
"point": "plan:pre",
|
||||
"ref": {
|
||||
"agent": "gsd-phase-researcher"
|
||||
"agent": "msd-phase-researcher"
|
||||
},
|
||||
"fragment": {
|
||||
"path": "fragments/plan-pre.md"
|
||||
|
||||
@@ -4,7 +4,7 @@ Answer: "What do I need to know to PLAN this phase well?"
|
||||
</objective>
|
||||
|
||||
<required_reading>
|
||||
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
|
||||
- {context_path} (USER DECISIONS from /msd:discuss-phase)
|
||||
- {requirements_path} (Project requirements)
|
||||
- {state_path} (Project decisions and history)
|
||||
</required_reading>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
Check if any files in the phase scope match schema patterns:
|
||||
|
||||
```bash
|
||||
PHASE_SECTION=$(gsd_run query roadmap.get-phase "${PHASE}" --pick section 2>/dev/null)
|
||||
PHASE_SECTION=$(msd_run query roadmap.get-phase "${PHASE}" --pick section 2>/dev/null)
|
||||
```
|
||||
|
||||
Scan `PHASE_SECTION`, `CONTEXT.md` (if loaded), and `RESEARCH.md` (if exists) for file paths matching these ORM patterns:
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -19,7 +19,7 @@
|
||||
"secure-phase"
|
||||
],
|
||||
"agents": [
|
||||
"gsd-security-auditor"
|
||||
"msd-security-auditor"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToTraeSkill"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToTraeAgent"
|
||||
@@ -42,7 +42,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToTraeSkill"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToTraeAgent"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "full",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtimeCompat": {
|
||||
"supported": [
|
||||
@@ -20,8 +20,8 @@
|
||||
"ui-review"
|
||||
],
|
||||
"agents": [
|
||||
"gsd-ui-checker",
|
||||
"gsd-ui-auditor"
|
||||
"msd-ui-checker",
|
||||
"msd-ui-auditor"
|
||||
],
|
||||
"hooks": [],
|
||||
"config": {
|
||||
@@ -43,7 +43,7 @@
|
||||
"workflow.ui_interaction_capture": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Default-off. Let gsd-ui-auditor add post-interaction captures (hover, focus, open menus, filled forms) through the chrome-devtools CLI, driven from Bash — no MCP server and no tools: change (#4223). Requires an installed Chrome; when off, or when none resolves, the auditor's Playwright-only static capture is unchanged."
|
||||
"description": "Default-off. Let msd-ui-auditor add post-interaction captures (hover, focus, open menus, filled forms) through the chrome-devtools CLI, driven from Bash — no MCP server and no tools: change (#4223). Requires an installed Chrome; when off, or when none resolves, the auditor's Playwright-only static capture is unchanged."
|
||||
}
|
||||
},
|
||||
"steps": [
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.7.0"
|
||||
"msd": ">=1.7.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -25,7 +25,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToWindsurfAgent"
|
||||
@@ -35,7 +35,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "workflows",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToWindsurfWorkflow"
|
||||
@@ -43,7 +43,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToWindsurfAgent"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"tier": "core",
|
||||
"requires": [],
|
||||
"engines": {
|
||||
"gsd": ">=1.6.0"
|
||||
"msd": ">=1.6.0"
|
||||
},
|
||||
"runtime": {
|
||||
"configHome": {
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClaudeSkill"
|
||||
@@ -32,7 +32,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -40,7 +40,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToZcodeAgent"
|
||||
@@ -50,7 +50,7 @@
|
||||
{
|
||||
"kind": "skills",
|
||||
"destSubpath": "skills",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "nested",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeCommandToClaudeSkill"
|
||||
@@ -58,7 +58,7 @@
|
||||
{
|
||||
"kind": "commands",
|
||||
"destSubpath": "commands",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": null
|
||||
@@ -66,7 +66,7 @@
|
||||
{
|
||||
"kind": "agents",
|
||||
"destSubpath": "agents",
|
||||
"prefix": "gsd-",
|
||||
"prefix": "msd-",
|
||||
"nesting": "flat",
|
||||
"recursive": false,
|
||||
"converter": "convertClaudeAgentToZcodeAgent"
|
||||
|
||||
Reference in New Issue
Block a user