plugins/gwt/skills/gwt-spec-register/SKILL.md
Create a new GitHub Issue-first SPEC container when no existing canonical SPEC fits. Seed the Issue body as an artifact index plus a `spec.md` comment, then continue into SPEC orchestration unless the user explicitly asks for register-only behavior.
npx skillsauth add akiojin/gwt gwt-spec-registerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to create a new gwt-spec Issue container only after confirming that no
existing canonical SPEC should own the scope.
gwt-spec-register owns creation, then normally returns control to gwt-spec-ops.
gwt-issue-register first.gwt-spec Issue already fits, use gwt-spec-ops instead.gwt-issue-resolve first.Before creating a new spec issue, use gwt-issue-search first.
Required behavior:
gh auth status is valid before any index-issues callgwt-spec Issue only when no suitable canonical SPEC existsDo not create a new SPEC when an existing canonical SPEC clearly owns the scope.
gwt-spec labelNew SPEC Issues must use this compact index structure:
<!-- GWT_SPEC_ID:#{number} -->
## Artifact Index
- `doc:spec.md`
- `doc:plan.md` (planned)
- `doc:tasks.md` (planned)
- `doc:research.md` (planned)
- `doc:data-model.md` (planned)
- `doc:quickstart.md` (planned)
- `contract:*`
- `checklist:*`
## Status
- Phase: Specify
- Clarification: Required
- Planning: Pending `gwt-spec-ops`
## Links
- Parent: ...
- Related: ...
- PRs: ...
spec.md artifactAfter issue creation, create a doc:spec.md issue comment with this minimum structure:
<!-- GWT_SPEC_ARTIFACT:doc:spec.md -->
doc:spec.md
# Feature Specification: <title>
## Background
...
## User Stories
### User Story 1 - <title> (Priority: P1)
...
## Acceptance Scenarios
1. Given ...
## Edge Cases
- ...
## Functional Requirements
- FR-001 ...
## Non-Functional Requirements
- NFR-001 ...
## Success Criteria
- SC-001 ...
Verify gh authentication.
gh auth status in the repo.Search for an existing canonical SPEC.
gwt-issue-search with at least 2 queries.gwt-spec-ops and continue there.Create the new gwt-spec Issue.
gh issue create fallback.gh issue create / gh issue edit hits a secondary rate limit, use the REST issue endpoints (POST / PATCH /repos/<owner>/<repo>/issues/...) instead of stopping.<!-- GWT_SPEC_ID:#NEW --> to <!-- GWT_SPEC_ID:#{number} -->.Seed the initial spec.md artifact.
[NEEDS CLARIFICATION: ...] instead of guessing.plan.md or tasks.md here.Continue through gwt-spec-ops unless register-only was explicitly requested.
gwt-spec-ops.gwt-spec-register should not stop at the first handoff boundary when the user's request is to keep moving.Artifact comments should be created with the shared helper:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/gwt-spec-ops/scripts/spec_artifact.py" \
--repo "." \
--issue "<number>" \
--upsert \
--artifact "doc:spec.md" \
--body-file /tmp/spec.md
The shared helper uses GitHub issue comment REST endpoints for create/update and should be preferred over raw gh issue comment.
gh issue create --label gwt-spec --title "feat: ..." --body "$(cat <<'EOF'
<!-- GWT_SPEC_ID:#NEW -->
## Artifact Index
- `doc:spec.md`
- `doc:plan.md` (planned)
- `doc:tasks.md` (planned)
- `doc:research.md` (planned)
- `doc:data-model.md` (planned)
- `doc:quickstart.md` (planned)
- `contract:*`
- `checklist:*`
## Status
- Phase: Specify
- Clarification: Required
- Planning: Pending `gwt-spec-ops`
## Links
- Parent: ...
- Related: ...
- PRs: ...
EOF
)"
gh issue edit {number} --body "$(updated body with <!-- GWT_SPEC_ID:#{number} -->)"
If gh issue create or gh issue edit is rate-limited, fall back to:
gh api "repos/<owner>/<repo>/issues" --method POST --input /tmp/spec-create.json
gh api "repos/<owner>/<repo>/issues/{number}" --method PATCH --input /tmp/spec-edit.json
spec.md artifact commentcat <<'EOF' >/tmp/spec.md
<!-- GWT_SPEC_ARTIFACT:doc:spec.md -->
# Feature Specification: ...
## Background
...
## User Stories
### User Story 1 - ... (Priority: P1)
...
## Acceptance Scenarios
1. Given ...
## Edge Cases
- ...
## Functional Requirements
- FR-001 ...
## Non-Functional Requirements
- NFR-001 ...
## Success Criteria
- SC-001 ...
EOF
python3 "${CLAUDE_PLUGIN_ROOT}/skills/gwt-spec-ops/scripts/spec_artifact.py" \
--repo "." \
--issue "{number}" \
--upsert \
--artifact "doc:spec.md" \
--body-file /tmp/spec.md
tools
Create distinctive, production-grade terminal user interfaces. Use when building TUI components with ratatui, CLI output styling, or xterm.js terminal rendering. Triggers: 'design TUI', 'terminal UI', 'TUIデザイン', 'ターミナルUI', 'ratatui widget'
testing
Semantic search over SPEC Issues (GitHub Issue cache at ~/.gwt/cache/issues/) using vector embeddings. Use when searching for existing specs, finding related specs, checking for duplicate specs, or determining which spec owns a scope. Mandatory preflight before gwt-discussion when the work may need a SPEC owner. Use when user says 'search specs', 'find related specs', 'check for duplicate specs', or asks which spec owns a scope.
testing
Mandatory preflight before gwt-discussion, gwt-register-issue, and gwt-fix-issue. Use proactively before creating any SPEC or Issue owner or before reusing an existing one. Searches SPEC Issues, GitHub Issues, and project files via ChromaDB. Triggers: 'search', 'find related', 'check duplicates'.
business
Use when the user wants to register new work from a bug report, idea, or task description and an existing GitHub Issue number is not already known.