Skip to content

refactor: rename /gh-issue-driven:goal → :objective (avoid built-in /goal collision) - #97

Merged
JFK merged 3 commits into
mainfrom
rename-goal-objective
Jun 16, 2026
Merged

refactor: rename /gh-issue-driven:goal → :objective (avoid built-in /goal collision)#97
JFK merged 3 commits into
mainfrom
rename-goal-objective

Conversation

@JFK

@JFK JFK commented Jun 16, 2026

Copy link
Copy Markdown
Owner

Why

Claude Code ships a built-in /goal command (sets a persistent cross-turn goal). The plugin's milestone orchestrator was also named goal. Plugin commands are always namespaced (/gh-issue-driven:goal can never resolve as a bare /goal), so there's no hard collision — but the two are conceptually adjacent ("autonomous goal pursuit") and clash in autocomplete and prose. (This session literally hit it: a /kagura-engineer:goal autocomplete misfire.) objective also just describes the command better — it drives a milestone; it isn't an abstract "goal".

What changed

  • commands/goal.mdcommands/objective.md — full command identity: self-refs, /goal/objective, log prefixes, recap labels, and the runtime cache subdir goal/objective/.
  • commands/goal.md is now a thin deprecation alias that prints a notice and forwards to /gh-issue-driven:objective via the Skill tool. Removed in v0.16.0.
  • skills/goal/skills/objective/ (Codex wrapper: name + command ref + ../../commands/objective.md).
  • Cross-references updated: start.md, ship.md, review.md, config.md, README.md, README.ja.md, and the plugin.json/marketplace.json descriptions.
  • tests/enum-sync-check.sh repointed at commands/objective.md (the enum source-of-truth file); fixture goal-run.jsonobjective-run.json.
  • Version 0.14.0 → 0.15.0, CHANGELOG entry, token-baseline snapshot refreshed (now 10 command files).

Deliberately NOT changed (with rationale)

  • The goal.* config namespace stays (goal.autonomy, goal.inner_review.*, …). Renaming it would break every existing gh-issue-driven-config.json; the objective command reads goal.* for back-compat. Documented in config.md; may migrate to objective.* in a future major.
  • docs/superpowers/* are dated historical design records — their /goal references are left intact (rewriting them would falsify the record).

⚠️ Breaking change + migration

/gh-issue-driven:goal still works this release via the forwarding alias, but is deprecated and removed in v0.16.0. Update usage to /gh-issue-driven:objective <milestone>. Config files need no changes (the goal.* keys are retained).

Verification

  • ✅ frontmatter (10 command files incl. the shim — description ≥30 chars)
  • ✅ token-baseline self-test (10 files)
  • ✅ verdict-parser fixtures (28/28)
  • jq-dependent enum-sync / state-schema tests run in CI (jq unavailable in the local shell); their file/label references were updated to match the rename.
  • Repo-wide sweep confirms no stray command-ref goal outside the kept config namespace, the English word, and historical docs.

🤖 Generated via direct rename (post-v0.14.0)

JFK and others added 3 commits June 16, 2026 10:21
…goal collision)

Claude Code ships a built-in `/goal` command (set a persistent cross-turn
goal). The plugin's milestone-driving orchestrator was also named `goal`, and
although plugin commands are always namespaced (`/gh-issue-driven:goal` can
never resolve as a bare `/goal`), the names are conceptually adjacent
("autonomous goal pursuit") and collide in autocomplete and prose. (This very
session hit it: a `/kagura-engineer:goal` autocomplete misfire.) Renaming to
`objective` also describes the command better — it drives a milestone, it
isn't an abstract "goal".

Changes:
- commands/goal.md → commands/objective.md (command identity, self-refs,
  log prefixes, recap labels, and the runtime cache subdir goal/ → objective/).
- commands/goal.md is now a thin DEPRECATION ALIAS that forwards to
  /gh-issue-driven:objective; it will be removed in v0.16.0.
- skills/goal/ → skills/objective/ (Codex wrapper: name + command ref).
- Cross-references updated in start.md, ship.md, review.md, config.md,
  README.md, README.ja.md, and the plugin/marketplace descriptions.
- tests/enum-sync-check.sh now points at commands/objective.md (the enum
  source-of-truth file); state-schema fixture goal-run.json → objective-run.json.
- Version 0.14.0 → 0.15.0; CHANGELOG entry added; token-baseline snapshot
  refreshed (now 10 command files: objective + the goal shim + 8).

Deliberately NOT changed:
- The `goal.*` CONFIG namespace (goal.autonomy / goal.inner_review / ...) is
  retained so existing gh-issue-driven-config.json files keep working without
  edits. Documented in config.md; may migrate to objective.* in a future major.
- docs/superpowers/* are dated historical design records and keep their
  original /goal references (rewriting them would falsify the record).

Verified: frontmatter (10 files incl. shim), token-baseline self-test, and the
verdict-parser fixtures all pass. The jq-dependent enum/state-schema tests run
in CI (jq unavailable in the local shell); their references were updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per the plugin's release convention, feature PRs stay at the current version
(0.14.0) and /gh-issue-driven:tag performs the bump in the release commit.
The rename ships as v0.15.0 when tagged; the prose 'renamed in v0.15.0'
references are kept (they name the release, not the current manifest).
@JFK
JFK marked this pull request as ready for review June 16, 2026 01:30
@JFK
JFK merged commit 2215f37 into main Jun 16, 2026
1 check passed
@JFK
JFK deleted the rename-goal-objective branch June 16, 2026 01:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant