Files
msd-core/commands/gsd/import.md
Tom Boucher 0e259a589c fix(#705): route hardcoded $HOME gsd-tools invocations in agents/commands through gsd_run (#707)
* fix(#705): route hardcoded $HOME gsd-tools invocations in agents/commands through gsd_run

The hardcoded `node "$HOME/.claude/gsd-core/bin/gsd-tools.cjs" <cmd>` form
(fixed for workflows in #621/#637) survived in agent/command surfaces and
misresolves on global/shim-only installs. Route every agent-executed
invocation through the resolved `gsd_run` launcher in gsd-phase-researcher,
gsd-planner (load_graph_context extracted to a shared reference to stay under
the planner size budget), import, and graphify. Add a regression guard over
agents/ + commands/ + gsd-core/references/ bash blocks. User-facing display
messages and docs are intentionally left untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(#705): use repo changeset fragment format (type: Fixed, pr: 707)

The hand-written fragment used the standard changesets package format
(package: bump) which lacks the type:/pr: frontmatter the repo's
docs-required lint consumes (fail_malformed_fragment / missing_type).
Regenerated via scripts/changeset/new.cjs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 09:26:29 -04:00

2.1 KiB

name, description, argument-hint, allowed-tools
name description argument-hint allowed-tools
gsd:import Ingest external plans with conflict detection against project decisions before writing anything. --from <filepath> | --from-gsd2
Read
Write
Edit
Bash
Glob
Grep
AskUserQuestion
Agent
Import external plan files into the GSD planning system with conflict detection against PROJECT.md decisions.
  • --from: Import an external plan file, detect conflicts, write as GSD PLAN.md, validate via gsd-plan-checker.
  • --from-gsd2: Reverse-migrate a GSD-2 project (.gsd/ directory) back to GSD v1 (.planning/) format. Runs gsd-tools.cjs from-gsd2. Pass --path <dir> to migrate a project at a different path.

<execution_context> @/.claude/gsd-core/workflows/import.md @/.claude/gsd-core/references/ui-brand.md @/.claude/gsd-core/references/gate-prompts.md @/.claude/gsd-core/references/doc-conflict-engine.md </execution_context>

$ARGUMENTS If `--from-gsd2` is in $ARGUMENTS: Run the reverse-migration (append `--path ` if provided): ```bash _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}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/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/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/gsd-core/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 from-gsd2 ``` Present the migration result to the user. Stop here (do not run the standard import workflow).

Otherwise, execute the import workflow end-to-end.