@kennethsolomon/shipkit 3.0.6 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,238 +0,0 @@
1
- ---
2
- name: features
3
- description: "Sync docs/sk:features/ specs with the current codebase. Auto-detects changed areas and updates only affected specs. Creates the spec system from scratch if it doesn't exist."
4
- ---
5
-
6
- <!-- Generated by /sk:setup-claude -->
7
-
8
- # /sk:features
9
-
10
- Keep feature specifications in `docs/sk:features/` in sync with the actual codebase.
11
- Works with **any project** — framework-agnostic, auto-discovers source structure.
12
-
13
- ## What This Does
14
-
15
- Maintains `docs/sk:features/` as a platform-agnostic feature specification system —
16
- the single source of truth shared between web, mobile, and any other platform
17
- that uses the same backend. Each spec covers: DB schema, business logic, API
18
- contract, permissions, edge cases, error states, web/mobile UI behavior, and
19
- platform divergences.
20
-
21
- ---
22
-
23
- ## Steps
24
-
25
- ### Step 1: Detect Project State
26
-
27
- Check what exists:
28
-
29
- ```bash
30
- ls docs/sk:features/ 2>/dev/null && echo "EXISTS" || echo "MISSING"
31
- ls docs/FEATURES.md 2>/dev/null && echo "INDEX_EXISTS" || echo "INDEX_MISSING"
32
- ```
33
-
34
- **If `docs/sk:features/` does not exist:**
35
- Ask the user: "No feature specification system found. Create one from scratch?"
36
- - Yes → jump to **[Create From Scratch](#create-from-scratch)** below
37
- - No → stop
38
-
39
- **If `docs/sk:features/` exists:**
40
- Continue to Step 2.
41
-
42
- ---
43
-
44
- ### Step 2: Determine Update Scope
45
-
46
- Present three options:
47
-
48
- > **What would you like to update?**
49
- > **A. Auto-detect** *(recommended)* — scan recent git changes, update only affected specs
50
- > **B. Select features** — pick which specs to update from the list
51
- > **C. Refresh all** — update every spec from current source code
52
-
53
- Wait for the user's choice.
54
-
55
- ---
56
-
57
- ### Step 3A: Auto-detect Changed Features
58
-
59
- ```bash
60
- git log --since="7 days ago" --name-only --pretty=format: | grep -v '^$' | sort -u
61
- ```
62
-
63
- Map changed file paths to feature specs using these rules:
64
-
65
- 1. **Read `docs/FEATURES.md`** to get the list of all spec files and their names.
66
- 2. For each changed file, determine which spec it belongs to:
67
- - Match by **feature name similarity**: if the spec is `expenses.md`, look for changed files containing `expense` in their path.
68
- - Match by **directory**: if the spec is `budgets.md`, match files under any `budgets/` or `budget/` directory.
69
- - Match by **schema files**: if any migration file, `schema.sql`, `schema.prisma`, `database.ts`, or similar schema file changed → mark ALL specs as potentially affected (schema changes ripple everywhere).
70
- 3. Deduplicate the affected spec list.
71
- 4. Report which specs will be updated and ask for confirmation.
72
-
73
- ---
74
-
75
- ### Step 3B: User Selects Features
76
-
77
- List all `.md` files in `docs/sk:features/` (excluding `_template.md`).
78
- Let the user pick which ones to update.
79
-
80
- ---
81
-
82
- ### Step 3C: Refresh All
83
-
84
- Set update list = all `.md` files in `docs/sk:features/` (excluding `_template.md`).
85
-
86
- ---
87
-
88
- ### Step 4: Update Each Affected Spec
89
-
90
- For each spec file to update, follow this sequence:
91
-
92
- #### 4a. Read the existing spec
93
- Understand its current content and section structure.
94
-
95
- #### 4b. Discover relevant source files
96
-
97
- Use a three-step lookup — no hardcoded paths:
98
-
99
- 1. **Name-based search**: the feature name from the spec filename (e.g., `expenses.md` → feature name `expenses`). Search the repo:
100
- ```bash
101
- # Find files whose name contains the feature keyword
102
- find . -type f \( -name "*expense*" -o -name "*expenses*" \) \
103
- ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/docs/*" \
104
- 2>/dev/null | head -30
105
- ```
106
- Adjust the keyword to match the feature name.
107
-
108
- 2. **Related Docs in spec**: read the `## Related Docs` section of the existing spec — it lists previously referenced files. Read those files too.
109
-
110
- 3. **DB schema hint**: read the `## Database Schema` section — it names tables. Search migrations and schema files for those table names.
111
-
112
- #### 4c. Read the source files
113
- Read all discovered source files to understand the current implementation.
114
-
115
- #### 4d. Identify what changed
116
- Compare the current source code against what the spec describes:
117
- - New or removed DB columns / tables / constraints
118
- - Changed business logic rules or state transitions
119
- - New/changed API payloads or query patterns
120
- - Updated permission keys or tier requirements
121
- - New edge cases, error codes, or recovery paths
122
-
123
- #### 4e. Update only changed sections
124
- Rewrite only the sections that are out of date. **Preserve all unchanged sections verbatim.**
125
- Update the `> Status` block if the implementation status on either platform changed.
126
-
127
- ---
128
-
129
- ### Step 5: Handle New Features
130
-
131
- If source code has a clear new feature (new hook, new route group, new major component) with no corresponding spec:
132
-
133
- 1. Create `docs/sk:features/<feature-name>.md` using `docs/sk:features/_template.md` as base.
134
- If `_template.md` doesn't exist, use this 11-section structure:
135
- ```
136
- Status → Overview → Database Schema → Business Logic → API Contract
137
- → Permissions & Access Control → Edge Cases → Error States
138
- → UI/UX Behavior (### Web + ### Mobile) → Platform Notes → Related Docs
139
- ```
140
- 2. Fill all 11 sections from current source code.
141
- 3. Add the new spec to `docs/FEATURES.md` under the appropriate section.
142
-
143
- ---
144
-
145
- ### Step 6: Update Master Index
146
-
147
- Review `docs/FEATURES.md`:
148
- - Add links for any new specs
149
- - Update status columns (Web / Mobile) if implementation status changed
150
- - Update any tier/feature tables if permissions changed
151
-
152
- ---
153
-
154
- ### Step 7: Report and Commit
155
-
156
- Show a summary:
157
- - ✅ **Updated**: `spec-name.md` — what changed (1 sentence each)
158
- - ➕ **Added**: any new spec files
159
- - ⏭️ **Skipped**: specs with no detected changes
160
-
161
- Ask: **"Commit the updated specs?"**
162
- - Yes → stage only files under `docs/` and commit:
163
- `docs(features): update feature specs to reflect current implementation`
164
- - No → leave changes unstaged for the user to review
165
-
166
- ---
167
-
168
- ## Create From Scratch
169
-
170
- When `docs/sk:features/` doesn't exist, discover and document all features:
171
-
172
- ### Discovery Phase
173
-
174
- 1. **Detect source structure** — find where feature logic lives:
175
- ```bash
176
- # Look for hooks, services, controllers, models, routes
177
- ls src/ lib/ app/ 2>/dev/null
178
- find . -maxdepth 4 -type f \
179
- \( -name "use-*.ts" -o -name "use-*.js" \
180
- -o -name "*.service.ts" -o -name "*.controller.ts" \
181
- -o -name "*.model.ts" -o -name "*.router.ts" \) \
182
- ! -path "*/node_modules/*" ! -path "*/.git/*" 2>/dev/null | head -50
183
- ```
184
-
185
- 2. **Detect schema files** — migrations, ORM schemas:
186
- ```bash
187
- find . -maxdepth 5 \
188
- \( -name "schema.sql" -o -name "*.schema.prisma" \
189
- -o -name "database.ts" -o -name "*.migration.*" \) \
190
- ! -path "*/node_modules/*" ! -path "*/.git/*" 2>/dev/null
191
- ls supabase/migrations/ 2>/dev/null | tail -10
192
- ls prisma/ 2>/dev/null
193
- ```
194
-
195
- 3. **Identify feature domains** from the discovered files — group related files into named features.
196
-
197
- 4. **Report discovered features** and ask the user to confirm/adjust the list before creating anything.
198
-
199
- ### Creation Phase
200
-
201
- For each confirmed feature:
202
- 1. Read all relevant source files.
203
- 2. Create `docs/sk:features/<feature-name>.md` with all 11 sections — based entirely on source code.
204
-
205
- Also create:
206
- - `docs/FEATURES.md` — master index with:
207
- - How-to-use section (web path + mobile path via `../project-name/docs/`)
208
- - Feature table grouped by domain
209
- - Tier/subscription overview (if the project has tiers)
210
- - `docs/sk:features/_template.md` — 11-section template for future specs
211
-
212
- Commit: `docs: add feature specification system`
213
-
214
- ---
215
-
216
- ## Quality Rules (Always Apply)
217
-
218
- - **Source-verified only** — every claim must be findable in source code; never invent behavior
219
- - **No placeholders** — no `// TODO`, no `false // will be computed`, no assumed values
220
- - **Surgical updates** — only rewrite what changed; preserve unchanged sections verbatim
221
- - **Numeric JSX coercion** — when documenting frontend behavior, note `!!value` (not `value &&`) for numerics to avoid rendering `0` as text in React/React Native
222
- - **Local date, not UTC** — for any time-bounded query (current month, today, etc.), document that implementations must use local `new Date()`, not `toISOString()` which returns UTC and causes off-by-one for users in non-UTC timezones
223
- - **All 11 sections required** — mark "N/A" only if genuinely not applicable
224
-
225
- ## Source Discovery Heuristics (Reference)
226
-
227
- When locating source files for a feature named `<name>`:
228
-
229
- | What to look for | Search pattern |
230
- |---|---|
231
- | Hooks / composables | `use-<name>.*`, `use<Name>.*` |
232
- | Components | directories or files matching `<name>/`, `*<name>*` |
233
- | API routes / controllers | `<name>.route.*`, `<name>.controller.*`, `api/<name>/` |
234
- | Services / repositories | `<name>.service.*`, `<name>.repo.*` |
235
- | DB schema | `migrations/` containing table name, `schema.prisma`, `database.ts` |
236
- | Tests | `<name>.test.*`, `<name>.spec.*` |
237
-
238
- These are starting points — read broadly and verify before updating any section.
@@ -1,72 +0,0 @@
1
- ---
2
- description: "Automate releases: bump version, update CHANGELOG, create tag, push to GitHub. Use --android and/or --ios flags for App Store / Play Store readiness audit."
3
- ---
4
-
5
- <!-- Generated by /sk:setup-claude -->
6
-
7
- # /sk:release
8
-
9
- Automate the release process for your project. Supports optional mobile store submission review.
10
-
11
- ## Usage
12
-
13
- ```
14
- /sk:release # Git release only
15
- /sk:release --android # Git release + Play Store audit
16
- /sk:release --ios # Git release + App Store audit
17
- /sk:release --android --ios # Git release + both store audits
18
- ```
19
-
20
- ## Hard Rules
21
-
22
- - **DO NOT** release without reviewing CHANGELOG.md changes
23
- - **DO NOT** proceed if CHANGELOG.md has no [Unreleased] section
24
- - You **must** have a git remote origin (GitHub, GitLab, etc.)
25
- - Version format must follow semantic versioning (e.g., v1.0.0, v0.2.0-beta)
26
- - When `--android` or `--ios` flags are present, **always run the store audit after the git release**
27
-
28
- ## Steps
29
-
30
- 1. **Parse flags** — Check for `--android` and/or `--ios` in the user's invocation.
31
-
32
- 2. **Verify CHANGELOG.md** — Check that the [Unreleased] section has the changes you want to release. If not, update CHANGELOG.md first and commit.
33
-
34
- 3. **Run the release script** — This will:
35
- - Auto-detect: project name, current version, GitHub URL
36
- - Prompt for: new version number
37
- - Suggest: release title based on changes
38
- - Update: CHANGELOG.md (move [Unreleased] -> [Version])
39
- - Update: version in CLAUDE.md (if it has a Version line)
40
- - Create: git commit with release message
41
- - Create: annotated git tag
42
- - Push: tag to GitHub (with confirmation at each step)
43
-
44
- 4. **Complete the release on GitHub** — The script will show you the GitHub releases link. Go there and:
45
- - Click "Create release from tag"
46
- - Use the suggested title
47
- - Copy the changelog section as release notes
48
- - Publish the release
49
-
50
- 5. **(If --android or --ios)** **Run Store Readiness Audit** — The release skill will:
51
- - Auto-detect the mobile framework (Expo, React Native, Flutter, native, Capacitor)
52
- - Detect if this is a first-time submission or an update
53
- - Walk through every item in the store checklist, checking config files
54
- - Report status for each item: PASS / FAIL / WARN / MANUAL CHECK NEEDED
55
- - Propose fixes for config issues (with your approval)
56
- - Guide you through manual steps (screenshots, store listing, etc.)
57
- - Present a summary report with next steps and build/submit commands
58
-
59
- ## When Done
60
-
61
- > "Release {version} completed! Check GitHub to finalize the release."
62
-
63
- If store flags were used:
64
- > "Store readiness audit complete. See the summary report above for remaining action items."
65
-
66
- ## Notes
67
-
68
- - Each step (commit, tag, push) requires your confirmation
69
- - You can skip any step and do it manually later
70
- - The script works with any project type: Node, Python, Go, Rust, etc.
71
- - Requires: CHANGELOG.md file with [Unreleased] section
72
- - Store audits support: Expo, React Native, Flutter, native Android/iOS, Capacitor/Ionic, .NET MAUI
@@ -1,238 +0,0 @@
1
- ---
2
- name: features
3
- description: "Sync docs/features/ specs with the current codebase. Auto-detects changed areas and updates only affected specs. Creates the spec system from scratch if it doesn't exist."
4
- ---
5
-
6
- <!-- Generated by /setup-claude -->
7
-
8
- # /features
9
-
10
- Keep feature specifications in `docs/features/` in sync with the actual codebase.
11
- Works with **any project** — framework-agnostic, auto-discovers source structure.
12
-
13
- ## What This Does
14
-
15
- Maintains `docs/features/` as a platform-agnostic feature specification system —
16
- the single source of truth shared between web, mobile, and any other platform
17
- that uses the same backend. Each spec covers: DB schema, business logic, API
18
- contract, permissions, edge cases, error states, web/mobile UI behavior, and
19
- platform divergences.
20
-
21
- ---
22
-
23
- ## Steps
24
-
25
- ### Step 1: Detect Project State
26
-
27
- Check what exists:
28
-
29
- ```bash
30
- ls docs/features/ 2>/dev/null && echo "EXISTS" || echo "MISSING"
31
- ls docs/FEATURES.md 2>/dev/null && echo "INDEX_EXISTS" || echo "INDEX_MISSING"
32
- ```
33
-
34
- **If `docs/features/` does not exist:**
35
- Ask the user: "No feature specification system found. Create one from scratch?"
36
- - Yes → jump to **[Create From Scratch](#create-from-scratch)** below
37
- - No → stop
38
-
39
- **If `docs/features/` exists:**
40
- Continue to Step 2.
41
-
42
- ---
43
-
44
- ### Step 2: Determine Update Scope
45
-
46
- Present three options:
47
-
48
- > **What would you like to update?**
49
- > **A. Auto-detect** *(recommended)* — scan recent git changes, update only affected specs
50
- > **B. Select features** — pick which specs to update from the list
51
- > **C. Refresh all** — update every spec from current source code
52
-
53
- Wait for the user's choice.
54
-
55
- ---
56
-
57
- ### Step 3A: Auto-detect Changed Features
58
-
59
- ```bash
60
- git log --since="7 days ago" --name-only --pretty=format: | grep -v '^$' | sort -u
61
- ```
62
-
63
- Map changed file paths to feature specs using these rules:
64
-
65
- 1. **Read `docs/FEATURES.md`** to get the list of all spec files and their names.
66
- 2. For each changed file, determine which spec it belongs to:
67
- - Match by **feature name similarity**: if the spec is `expenses.md`, look for changed files containing `expense` in their path.
68
- - Match by **directory**: if the spec is `budgets.md`, match files under any `budgets/` or `budget/` directory.
69
- - Match by **schema files**: if any migration file, `schema.sql`, `schema.prisma`, `database.ts`, or similar schema file changed → mark ALL specs as potentially affected (schema changes ripple everywhere).
70
- 3. Deduplicate the affected spec list.
71
- 4. Report which specs will be updated and ask for confirmation.
72
-
73
- ---
74
-
75
- ### Step 3B: User Selects Features
76
-
77
- List all `.md` files in `docs/features/` (excluding `_template.md`).
78
- Let the user pick which ones to update.
79
-
80
- ---
81
-
82
- ### Step 3C: Refresh All
83
-
84
- Set update list = all `.md` files in `docs/features/` (excluding `_template.md`).
85
-
86
- ---
87
-
88
- ### Step 4: Update Each Affected Spec
89
-
90
- For each spec file to update, follow this sequence:
91
-
92
- #### 4a. Read the existing spec
93
- Understand its current content and section structure.
94
-
95
- #### 4b. Discover relevant source files
96
-
97
- Use a three-step lookup — no hardcoded paths:
98
-
99
- 1. **Name-based search**: the feature name from the spec filename (e.g., `expenses.md` → feature name `expenses`). Search the repo:
100
- ```bash
101
- # Find files whose name contains the feature keyword
102
- find . -type f \( -name "*expense*" -o -name "*expenses*" \) \
103
- ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/docs/*" \
104
- 2>/dev/null | head -30
105
- ```
106
- Adjust the keyword to match the feature name.
107
-
108
- 2. **Related Docs in spec**: read the `## Related Docs` section of the existing spec — it lists previously referenced files. Read those files too.
109
-
110
- 3. **DB schema hint**: read the `## Database Schema` section — it names tables. Search migrations and schema files for those table names.
111
-
112
- #### 4c. Read the source files
113
- Read all discovered source files to understand the current implementation.
114
-
115
- #### 4d. Identify what changed
116
- Compare the current source code against what the spec describes:
117
- - New or removed DB columns / tables / constraints
118
- - Changed business logic rules or state transitions
119
- - New/changed API payloads or query patterns
120
- - Updated permission keys or tier requirements
121
- - New edge cases, error codes, or recovery paths
122
-
123
- #### 4e. Update only changed sections
124
- Rewrite only the sections that are out of date. **Preserve all unchanged sections verbatim.**
125
- Update the `> Status` block if the implementation status on either platform changed.
126
-
127
- ---
128
-
129
- ### Step 5: Handle New Features
130
-
131
- If source code has a clear new feature (new hook, new route group, new major component) with no corresponding spec:
132
-
133
- 1. Create `docs/features/<feature-name>.md` using `docs/features/_template.md` as base.
134
- If `_template.md` doesn't exist, use this 11-section structure:
135
- ```
136
- Status → Overview → Database Schema → Business Logic → API Contract
137
- → Permissions & Access Control → Edge Cases → Error States
138
- → UI/UX Behavior (### Web + ### Mobile) → Platform Notes → Related Docs
139
- ```
140
- 2. Fill all 11 sections from current source code.
141
- 3. Add the new spec to `docs/FEATURES.md` under the appropriate section.
142
-
143
- ---
144
-
145
- ### Step 6: Update Master Index
146
-
147
- Review `docs/FEATURES.md`:
148
- - Add links for any new specs
149
- - Update status columns (Web / Mobile) if implementation status changed
150
- - Update any tier/feature tables if permissions changed
151
-
152
- ---
153
-
154
- ### Step 7: Report and Commit
155
-
156
- Show a summary:
157
- - ✅ **Updated**: `spec-name.md` — what changed (1 sentence each)
158
- - ➕ **Added**: any new spec files
159
- - ⏭️ **Skipped**: specs with no detected changes
160
-
161
- Ask: **"Commit the updated specs?"**
162
- - Yes → stage only files under `docs/` and commit:
163
- `docs(features): update feature specs to reflect current implementation`
164
- - No → leave changes unstaged for the user to review
165
-
166
- ---
167
-
168
- ## Create From Scratch
169
-
170
- When `docs/features/` doesn't exist, discover and document all features:
171
-
172
- ### Discovery Phase
173
-
174
- 1. **Detect source structure** — find where feature logic lives:
175
- ```bash
176
- # Look for hooks, services, controllers, models, routes
177
- ls src/ lib/ app/ 2>/dev/null
178
- find . -maxdepth 4 -type f \
179
- \( -name "use-*.ts" -o -name "use-*.js" \
180
- -o -name "*.service.ts" -o -name "*.controller.ts" \
181
- -o -name "*.model.ts" -o -name "*.router.ts" \) \
182
- ! -path "*/node_modules/*" ! -path "*/.git/*" 2>/dev/null | head -50
183
- ```
184
-
185
- 2. **Detect schema files** — migrations, ORM schemas:
186
- ```bash
187
- find . -maxdepth 5 \
188
- \( -name "schema.sql" -o -name "*.schema.prisma" \
189
- -o -name "database.ts" -o -name "*.migration.*" \) \
190
- ! -path "*/node_modules/*" ! -path "*/.git/*" 2>/dev/null
191
- ls supabase/migrations/ 2>/dev/null | tail -10
192
- ls prisma/ 2>/dev/null
193
- ```
194
-
195
- 3. **Identify feature domains** from the discovered files — group related files into named features.
196
-
197
- 4. **Report discovered features** and ask the user to confirm/adjust the list before creating anything.
198
-
199
- ### Creation Phase
200
-
201
- For each confirmed feature:
202
- 1. Read all relevant source files.
203
- 2. Create `docs/features/<feature-name>.md` with all 11 sections — based entirely on source code.
204
-
205
- Also create:
206
- - `docs/FEATURES.md` — master index with:
207
- - How-to-use section (web path + mobile path via `../project-name/docs/`)
208
- - Feature table grouped by domain
209
- - Tier/subscription overview (if the project has tiers)
210
- - `docs/features/_template.md` — 11-section template for future specs
211
-
212
- Commit: `docs: add feature specification system`
213
-
214
- ---
215
-
216
- ## Quality Rules (Always Apply)
217
-
218
- - **Source-verified only** — every claim must be findable in source code; never invent behavior
219
- - **No placeholders** — no `// TODO`, no `false // will be computed`, no assumed values
220
- - **Surgical updates** — only rewrite what changed; preserve unchanged sections verbatim
221
- - **Numeric JSX coercion** — when documenting frontend behavior, note `!!value` (not `value &&`) for numerics to avoid rendering `0` as text in React/React Native
222
- - **Local date, not UTC** — for any time-bounded query (current month, today, etc.), document that implementations must use local `new Date()`, not `toISOString()` which returns UTC and causes off-by-one for users in non-UTC timezones
223
- - **All 11 sections required** — mark "N/A" only if genuinely not applicable
224
-
225
- ## Source Discovery Heuristics (Reference)
226
-
227
- When locating source files for a feature named `<name>`:
228
-
229
- | What to look for | Search pattern |
230
- |---|---|
231
- | Hooks / composables | `use-<name>.*`, `use<Name>.*` |
232
- | Components | directories or files matching `<name>/`, `*<name>*` |
233
- | API routes / controllers | `<name>.route.*`, `<name>.controller.*`, `api/<name>/` |
234
- | Services / repositories | `<name>.service.*`, `<name>.repo.*` |
235
- | DB schema | `migrations/` containing table name, `schema.prisma`, `database.ts` |
236
- | Tests | `<name>.test.*`, `<name>.spec.*` |
237
-
238
- These are starting points — read broadly and verify before updating any section.
@@ -1,74 +0,0 @@
1
- ---
2
- description: "Automate releases: bump version, update CHANGELOG, create tag, push to GitHub. Use --android and/or --ios flags for App Store / Play Store readiness audit."
3
- ---
4
-
5
- <!-- Generated by /setup-claude -->
6
-
7
- # /release
8
-
9
- **Workflow:** Read → Explore → Design → Accessibility → Plan → Branch → Migrate → Write Tests → Implement → Lint → Verify Tests → Security → Performance → Review → Finalize → **Release**
10
-
11
- Automate the release process for your project. Supports optional mobile store submission review.
12
-
13
- ## Usage
14
-
15
- ```
16
- /release # Git release only
17
- /release --android # Git release + Play Store audit
18
- /release --ios # Git release + App Store audit
19
- /release --android --ios # Git release + both store audits
20
- ```
21
-
22
- ## Hard Rules
23
-
24
- - **DO NOT** release without reviewing CHANGELOG.md changes
25
- - **DO NOT** proceed if CHANGELOG.md has no [Unreleased] section
26
- - You **must** have a git remote origin (GitHub, GitLab, etc.)
27
- - Version format must follow semantic versioning (e.g., v1.0.0, v0.2.0-beta)
28
- - When `--android` or `--ios` flags are present, **always run the store audit after the git release**
29
-
30
- ## Steps
31
-
32
- 1. **Parse flags** — Check for `--android` and/or `--ios` in the user's invocation.
33
-
34
- 2. **Verify CHANGELOG.md** — Check that the [Unreleased] section has the changes you want to release. If not, update CHANGELOG.md first and commit.
35
-
36
- 3. **Run the release script** — This will:
37
- - Auto-detect: project name, current version, GitHub URL
38
- - Prompt for: new version number
39
- - Suggest: release title based on changes
40
- - Update: CHANGELOG.md (move [Unreleased] -> [Version])
41
- - Update: version in CLAUDE.md (if it has a Version line)
42
- - Create: git commit with release message
43
- - Create: annotated git tag
44
- - Push: tag to GitHub (with confirmation at each step)
45
-
46
- 4. **Complete the release on GitHub** — The script will show you the GitHub releases link. Go there and:
47
- - Click "Create release from tag"
48
- - Use the suggested title
49
- - Copy the changelog section as release notes
50
- - Publish the release
51
-
52
- 5. **(If --android or --ios)** **Run Store Readiness Audit** — The release skill will:
53
- - Auto-detect the mobile framework (Expo, React Native, Flutter, native, Capacitor)
54
- - Detect if this is a first-time submission or an update
55
- - Walk through every item in the store checklist, checking config files
56
- - Report status for each item: PASS / FAIL / WARN / MANUAL CHECK NEEDED
57
- - Propose fixes for config issues (with your approval)
58
- - Guide you through manual steps (screenshots, store listing, etc.)
59
- - Present a summary report with next steps and build/submit commands
60
-
61
- ## When Done
62
-
63
- > "Release {version} completed! Check GitHub to finalize the release."
64
-
65
- If store flags were used:
66
- > "Store readiness audit complete. See the summary report above for remaining action items."
67
-
68
- ## Notes
69
-
70
- - Each step (commit, tag, push) requires your confirmation
71
- - You can skip any step and do it manually later
72
- - The script works with any project type: Node, Python, Go, Rust, etc.
73
- - Requires: CHANGELOG.md file with [Unreleased] section
74
- - Store audits support: Expo, React Native, Flutter, native Android/iOS, Capacitor/Ionic, .NET MAUI