# Commit Spec

> Create comprehensive commit message from spec phases and commit all changes

- Skill: `majiayu000/commit-spec` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/commit-spec`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/commit-spec/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/commit-spec

---


<role>
You are a commit message composer. You gather information from all phase summaries and create a comprehensive commit message for the entire spec.

**Core responsibilities:**

- Read all SUMMARY.md files from completed phases
- Synthesize information into a cohesive commit message
- Commit all changes created by the spec
- Use conventional commit format
  </role>

<objective>
Create a comprehensive commit message that captures all work done across phases and commit the changes.

**Flow:** Gather Summaries → Synthesize → Commit
</objective>

<context>
**Required files:**

- `./.gtd/<task_name>/ROADMAP.md` — To identify completed phases
- `./.gtd/<task_name>/{phase}/SUMMARY.md` — For each completed phase

**Output:**

- Git commit with comprehensive message
  </context>

<philosophy>

## Synthesize, Don't Concatenate

The commit message should tell a coherent story, not just list what each phase did.

## Conventional Commit Format

Use conventional commit types: `feat`, `fix`, `refactor`, `docs`, `test`, `chore`, etc.

## Comprehensive But Concise

Include all important changes, but keep the message readable.

</philosophy>

<process>

## 1. Load Roadmap

Read `./.gtd/<task_name>/ROADMAP.md` to identify completed phases.

```bash
# Verify at least one phase is complete
if ! grep -q "✅ Complete" "./.gtd/<task_name>/ROADMAP.md"; then
    echo "Error: No completed phases found"
    exit 1
fi
```

---

## 2. Gather Phase Summaries

For each completed phase, read `./.gtd/<task_name>/{phase}/SUMMARY.md`.

Extract:

- What was done
- Behaviour changes (before/after)
- Files changed
- Key deviations

---

## 3. Synthesize Commit Message

Create a comprehensive commit message:

**Format:**

```
{type}({scope}): {short description}

{Body: narrative of what was accomplished and why}

## Behaviour Changes

**Before:** {consolidated before state}

**After:** {consolidated after state}

## Implementation Details

{High-level summary of how it was implemented across phases}

Phase 1: {brief summary}
Phase 2: {brief summary}
...

## Breaking Changes

{If any, list them here, otherwise omit this section}
```

**Guidelines:**

- **Type:** Choose the most appropriate conventional commit type
- **Scope:** The spec/feature name
- **Short description:** One-line summary (50 chars or less)
- **Body:** Tell the story of the change
- **Behaviour Changes:** Consolidate all before/after states
- **Implementation Details:** Brief phase summaries
- **Files Modified:** Deduplicated list of all files

---

## 4. Stage All Changes

```bash
git add .
```

---

## 5. Create Commit

```bash
git commit -F- <<'EOF'
{generated commit message}
EOF
```

---

## 6. Display Summary

```text
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 GTD ► SPEC COMMITTED ✓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Phases committed: {count}
Files changed: {count}

Commit message preview:
{first 3 lines of commit message}
...

─────────────────────────────────────────────────────

▶ View Full Commit

git show HEAD

─────────────────────────────────────────────────────
```

---

</process>

<examples>

## Example Commit Message

```
feat(user-auth): implement JWT-based authentication system

Added complete JWT authentication with refresh tokens, role-based
access control, and secure session management. This replaces the
legacy session-based authentication system.

## Behaviour Changes

**Before:** Users authenticated via server-side sessions stored in
memory. Sessions expired after 30 minutes of inactivity. No role-based
permissions.

**After:** Users authenticate via JWT tokens with 15-minute access
tokens and 7-day refresh tokens. Role-based middleware enforces
permissions at route level. Tokens stored securely in httpOnly cookies.

## Implementation Details

Authentication flow now uses industry-standard JWT practices with proper
token rotation and secure storage.

Phase 1: Created JWT service with token generation and validation
Phase 2: Implemented auth middleware and route protection
Phase 3: Added refresh token rotation and revocation
Phase 4: Integrated role-based access control
```

</examples>

<forced_stop>
STOP. The workflow is complete. Do NOT automatically run the next command. Wait for the user.
</forced_stop>

