refactor: rename /gh-issue-driven:goal → :objective (avoid built-in /goal collision) - #97
Merged
Conversation
…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
marked this pull request as ready for review
June 16, 2026 01:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Claude Code ships a built-in
/goalcommand (sets a persistent cross-turn goal). The plugin's milestone orchestrator was also namedgoal. Plugin commands are always namespaced (/gh-issue-driven:goalcan 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:goalautocomplete misfire.)objectivealso just describes the command better — it drives a milestone; it isn't an abstract "goal".What changed
commands/goal.md→commands/objective.md— full command identity: self-refs,/goal→/objective, log prefixes, recap labels, and the runtime cache subdirgoal/→objective/.commands/goal.mdis now a thin deprecation alias that prints a notice and forwards to/gh-issue-driven:objectivevia the Skill tool. Removed in v0.16.0.skills/goal/→skills/objective/(Codex wrapper:name+ command ref +../../commands/objective.md).start.md,ship.md,review.md,config.md,README.md,README.ja.md, and theplugin.json/marketplace.jsondescriptions.tests/enum-sync-check.shrepointed atcommands/objective.md(the enum source-of-truth file); fixturegoal-run.json→objective-run.json.Deliberately NOT changed (with rationale)
goal.*config namespace stays (goal.autonomy,goal.inner_review.*, …). Renaming it would break every existinggh-issue-driven-config.json; theobjectivecommand readsgoal.*for back-compat. Documented inconfig.md; may migrate toobjective.*in a future major.docs/superpowers/*are dated historical design records — their/goalreferences are left intact (rewriting them would falsify the record)./gh-issue-driven:goalstill 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 (thegoal.*keys are retained).Verification
description≥30 chars)goaloutside the kept config namespace, the English word, and historical docs.🤖 Generated via direct rename (post-v0.14.0)