@kennethsolomon/shipkit 3.15.1 → 3.16.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.
Files changed (64) hide show
  1. package/README.md +231 -1
  2. package/bin/shipkit.js +24 -4
  3. package/commands/sk/branch.md +1 -0
  4. package/commands/sk/finish-feature.md +1 -0
  5. package/commands/sk/hotfix.md +1 -0
  6. package/commands/sk/security-check.md +2 -1
  7. package/package.json +1 -1
  8. package/skills/sk:accessibility/SKILL.md +3 -0
  9. package/skills/sk:autopilot/SKILL.md +1 -1
  10. package/skills/sk:ci/SKILL.md +338 -0
  11. package/skills/sk:context/SKILL.md +1 -0
  12. package/skills/sk:e2e/SKILL.md +1 -0
  13. package/skills/sk:fast-track/SKILL.md +1 -1
  14. package/skills/sk:gates/SKILL.md +1 -1
  15. package/skills/sk:lint/SKILL.md +1 -0
  16. package/skills/sk:perf/SKILL.md +1 -0
  17. package/skills/sk:plugin/SKILL.md +221 -0
  18. package/skills/sk:release/SKILL.md +2 -0
  19. package/skills/sk:retro/SKILL.md +1 -1
  20. package/skills/sk:reverse-doc/SKILL.md +3 -1
  21. package/skills/sk:review/SKILL.md +1 -0
  22. package/skills/sk:scope-check/SKILL.md +1 -1
  23. package/skills/sk:security-check/SKILL.md +219 -0
  24. package/skills/sk:seo-audit/SKILL.md +3 -0
  25. package/skills/sk:setup-claude/templates/.claude/agents/architect.md +62 -0
  26. package/skills/sk:setup-claude/templates/.claude/agents/backend-dev.md +3 -1
  27. package/skills/sk:setup-claude/templates/.claude/agents/code-reviewer.md +38 -0
  28. package/skills/sk:setup-claude/templates/.claude/agents/database-architect.md +69 -0
  29. package/skills/sk:setup-claude/templates/.claude/agents/debugger.md +26 -0
  30. package/skills/sk:setup-claude/templates/.claude/agents/devops-engineer.md +51 -0
  31. package/skills/sk:setup-claude/templates/.claude/agents/e2e-tester.md +1 -1
  32. package/skills/sk:setup-claude/templates/.claude/agents/frontend-dev.md +3 -1
  33. package/skills/sk:setup-claude/templates/.claude/agents/linter.md +1 -1
  34. package/skills/sk:setup-claude/templates/.claude/agents/mobile-dev.md +49 -0
  35. package/skills/sk:setup-claude/templates/.claude/agents/perf-auditor.md +1 -1
  36. package/skills/sk:setup-claude/templates/.claude/agents/performance-optimizer.md +72 -0
  37. package/skills/sk:setup-claude/templates/.claude/agents/qa-engineer.md +3 -1
  38. package/skills/sk:setup-claude/templates/.claude/agents/refactor-specialist.md +67 -0
  39. package/skills/sk:setup-claude/templates/.claude/agents/security-auditor.md +2 -1
  40. package/skills/sk:setup-claude/templates/.claude/agents/tech-writer.md +60 -0
  41. package/skills/sk:setup-claude/templates/.claude/agents/test-runner.md +2 -1
  42. package/skills/sk:setup-claude/templates/.claude/rules/api.md.template +9 -3
  43. package/skills/sk:setup-claude/templates/.claude/rules/frontend.md.template +9 -3
  44. package/skills/sk:setup-claude/templates/.claude/rules/laravel.md.template +8 -3
  45. package/skills/sk:setup-claude/templates/.claude/rules/migrations.md.template +24 -0
  46. package/skills/sk:setup-claude/templates/.claude/rules/react.md.template +8 -3
  47. package/skills/sk:setup-claude/templates/.claude/rules/tests.md.template +12 -3
  48. package/skills/sk:setup-claude/templates/.claude/rules/vue.md.template +22 -0
  49. package/skills/sk:setup-optimizer/SKILL.md +61 -2
  50. package/skills/sk:smart-commit/SKILL.md +1 -0
  51. package/skills/sk:start/SKILL.md +1 -1
  52. package/skills/sk:team/SKILL.md +1 -1
  53. package/skills/sk:website/SKILL.md +1 -0
  54. package/commands/sk/autopilot.md +0 -22
  55. package/commands/sk/context-budget.md +0 -5
  56. package/commands/sk/eval.md +0 -5
  57. package/commands/sk/health.md +0 -5
  58. package/commands/sk/learn.md +0 -5
  59. package/commands/sk/resume-session.md +0 -5
  60. package/commands/sk/safety-guard.md +0 -5
  61. package/commands/sk/save-session.md +0 -5
  62. package/commands/sk/start.md +0 -30
  63. package/commands/sk/team.md +0 -23
  64. package/commands/sk/website.md +0 -93
@@ -0,0 +1,338 @@
1
+ ---
2
+ name: sk:ci
3
+ description: "Set up Claude Code GitHub Actions or GitLab CI integration. Generates workflow files for PR review, issue triage, nightly audits, and release automation. Supports direct API, AWS Bedrock, and Google Vertex AI."
4
+ disable-model-invocation: true
5
+ argument-hint: "[github|gitlab] [--bedrock|--vertex]"
6
+ ---
7
+
8
+ # /sk:ci
9
+
10
+ Set up Claude Code CI/CD integration: GitHub Actions or GitLab CI.
11
+
12
+ ## Before You Start
13
+
14
+ 1. Read `CLAUDE.md` to understand the project stack and repository type
15
+ 2. Check if `.github/workflows/` or `.gitlab-ci.yml` already exists
16
+ 3. Detect provider: `git remote -v` — github.com → GitHub Actions, gitlab.com → GitLab CI
17
+
18
+ ## Step 1 — Choose Provider
19
+
20
+ **GitHub Actions** (default):
21
+ - Quick setup: Run `/install-github-app` in Claude Code terminal
22
+ - Manual setup: follow the instructions below
23
+
24
+ **GitLab CI**: generate `.gitlab-ci.yml` with inline Claude Code runner
25
+
26
+ If user doesn't specify, ask: "GitHub Actions or GitLab CI?"
27
+
28
+ ## Step 2 — Choose Authentication
29
+
30
+ For GitHub Actions, ask:
31
+
32
+ > "Which API provider? (1) Anthropic direct API — simplest, (2) AWS Bedrock — enterprise/data residency, (3) Google Vertex AI — enterprise/GCP"
33
+
34
+ For option 1 (direct API), proceed to Step 3.
35
+ For options 2 or 3, follow the Enterprise Setup section below.
36
+
37
+ ## Step 3 — Choose Workflows
38
+
39
+ Present a checklist. Ask the user which they want:
40
+
41
+ ```
42
+ Which workflows do you want to set up? (select all that apply)
43
+
44
+ [1] @claude trigger — respond to @claude mentions in PR/issue comments
45
+ [2] Auto PR review — review every PR automatically on open/sync
46
+ [3] Issue triage — auto-label and respond to new issues
47
+ [4] Nightly audit — daily code quality / security / SEO review
48
+ [5] Release automation — auto-generate changelog on tag push
49
+ ```
50
+
51
+ Generate only the selected workflows.
52
+
53
+ ## GitHub Actions — Workflow Templates
54
+
55
+ ### [1] @claude Trigger (responds to @claude mentions)
56
+
57
+ Create `.github/workflows/claude.yml`:
58
+
59
+ ```yaml
60
+ name: Claude Code
61
+ on:
62
+ issue_comment:
63
+ types: [created]
64
+ pull_request_review_comment:
65
+ types: [created]
66
+ issues:
67
+ types: [opened, assigned]
68
+
69
+ permissions:
70
+ contents: write
71
+ pull-requests: write
72
+ issues: write
73
+
74
+ jobs:
75
+ claude:
76
+ if: |
77
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
78
+ (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
79
+ (github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
80
+ runs-on: ubuntu-latest
81
+ steps:
82
+ - uses: actions/checkout@v4
83
+ - uses: anthropics/claude-code-action@v1
84
+ with:
85
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
86
+ ```
87
+
88
+ ### [2] Auto PR Review
89
+
90
+ Create `.github/workflows/claude-review.yml`:
91
+
92
+ ```yaml
93
+ name: Claude PR Review
94
+ on:
95
+ pull_request:
96
+ types: [opened, synchronize]
97
+
98
+ permissions:
99
+ contents: read
100
+ pull-requests: write
101
+
102
+ jobs:
103
+ review:
104
+ runs-on: ubuntu-latest
105
+ steps:
106
+ - uses: actions/checkout@v4
107
+ with:
108
+ fetch-depth: 0
109
+ - uses: anthropics/claude-code-action@v1
110
+ with:
111
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
112
+ prompt: |
113
+ Review this pull request for:
114
+ 1. Correctness — logic errors, edge cases, off-by-one errors
115
+ 2. Security — OWASP Top 10, injection, auth issues
116
+ 3. Performance — N+1 queries, unnecessary allocations
117
+ 4. Test coverage — missing tests for new code paths
118
+
119
+ Post findings as inline review comments on the diff.
120
+ If the PR is clean, post a single approval comment.
121
+ claude_args: "--max-turns 5"
122
+ ```
123
+
124
+ ### [3] Issue Triage
125
+
126
+ Create `.github/workflows/claude-triage.yml`:
127
+
128
+ ```yaml
129
+ name: Claude Issue Triage
130
+ on:
131
+ issues:
132
+ types: [opened]
133
+
134
+ permissions:
135
+ contents: read
136
+ issues: write
137
+
138
+ jobs:
139
+ triage:
140
+ runs-on: ubuntu-latest
141
+ steps:
142
+ - uses: actions/checkout@v4
143
+ - uses: anthropics/claude-code-action@v1
144
+ with:
145
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
146
+ prompt: |
147
+ Triage this new issue:
148
+ 1. Add appropriate labels (bug, enhancement, question, documentation)
149
+ 2. Ask for missing information (reproduction steps, OS, version)
150
+ 3. Check if a similar issue already exists — if so, link it
151
+ 4. Estimate complexity: trivial / small / medium / large
152
+
153
+ Post a single helpful comment. Be concise.
154
+ claude_args: "--max-turns 3"
155
+ ```
156
+
157
+ ### [4] Nightly Audit
158
+
159
+ Create `.github/workflows/claude-nightly.yml`:
160
+
161
+ ```yaml
162
+ name: Claude Nightly Audit
163
+ on:
164
+ schedule:
165
+ - cron: "0 2 * * *" # 2 AM UTC daily
166
+ workflow_dispatch: # allow manual trigger
167
+
168
+ permissions:
169
+ contents: write
170
+ issues: write
171
+ pull-requests: write
172
+
173
+ jobs:
174
+ audit:
175
+ runs-on: ubuntu-latest
176
+ steps:
177
+ - uses: actions/checkout@v4
178
+ with:
179
+ fetch-depth: 0
180
+ - uses: anthropics/claude-code-action@v1
181
+ with:
182
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
183
+ prompt: |
184
+ Run a nightly audit of this repository:
185
+ 1. Security: Check for new vulnerabilities, outdated dependencies
186
+ 2. Code quality: Identify patterns that should be refactored
187
+ 3. Documentation gaps: Find public APIs or components with no docs
188
+ 4. Dead code: Identify unused exports, orphaned files
189
+
190
+ If critical findings exist, create a GitHub issue titled
191
+ "Nightly Audit [date] — N critical findings" with a full report.
192
+ If clean, no action needed.
193
+ claude_args: "--max-turns 10 --model claude-sonnet-4-6"
194
+ ```
195
+
196
+ ### [5] Release Automation
197
+
198
+ Create `.github/workflows/claude-release.yml`:
199
+
200
+ ```yaml
201
+ name: Claude Release Notes
202
+ on:
203
+ push:
204
+ tags:
205
+ - 'v*'
206
+
207
+ permissions:
208
+ contents: write
209
+
210
+ jobs:
211
+ release:
212
+ runs-on: ubuntu-latest
213
+ steps:
214
+ - uses: actions/checkout@v4
215
+ with:
216
+ fetch-depth: 0
217
+ - uses: anthropics/claude-code-action@v1
218
+ with:
219
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
220
+ prompt: |
221
+ Generate release notes for this tag based on commits since the last tag.
222
+ Group by: Features, Bug Fixes, Performance, Breaking Changes.
223
+ Keep it concise — 3-5 bullet points per section maximum.
224
+ Create a GitHub Release with these notes.
225
+ claude_args: "--max-turns 5"
226
+ ```
227
+
228
+ ## Enterprise Setup — AWS Bedrock
229
+
230
+ For Bedrock, update each workflow's `steps` to add:
231
+
232
+ ```yaml
233
+ # After actions/checkout, before claude-code-action:
234
+ - name: Configure AWS Credentials
235
+ uses: aws-actions/configure-aws-credentials@v4
236
+ with:
237
+ role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
238
+ aws-region: us-west-2
239
+
240
+ # In claude-code-action:
241
+ - uses: anthropics/claude-code-action@v1
242
+ with:
243
+ use_bedrock: "true"
244
+ claude_args: "--model us.anthropic.claude-sonnet-4-6 --max-turns 10"
245
+ # No anthropic_api_key needed — uses AWS credentials
246
+ ```
247
+
248
+ **Required secrets:** `AWS_ROLE_TO_ASSUME`
249
+
250
+ **Required AWS setup:**
251
+ 1. Configure GitHub OIDC identity provider in AWS IAM
252
+ 2. Create IAM role with `AmazonBedrockFullAccess` that trusts GitHub Actions
253
+ 3. Enable Claude model access in AWS Bedrock console
254
+
255
+ ## Enterprise Setup — Google Vertex AI
256
+
257
+ ```yaml
258
+ # After actions/checkout, before claude-code-action:
259
+ - name: Authenticate to Google Cloud
260
+ id: auth
261
+ uses: google-github-actions/auth@v2
262
+ with:
263
+ workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
264
+ service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
265
+
266
+ - uses: anthropics/claude-code-action@v1
267
+ with:
268
+ use_vertex: "true"
269
+ claude_args: "--model claude-sonnet-4@20250514 --max-turns 10"
270
+ env:
271
+ ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
272
+ CLOUD_ML_REGION: us-east5
273
+ ```
274
+
275
+ **Required secrets:** `GCP_WORKLOAD_IDENTITY_PROVIDER`, `GCP_SERVICE_ACCOUNT`
276
+
277
+ ## Custom GitHub App (Optional)
278
+
279
+ For branded bot usernames or enterprise requirements:
280
+
281
+ 1. Create GitHub App at https://github.com/settings/apps/new
282
+ - Permissions: Contents (R+W), Issues (R+W), Pull Requests (R+W)
283
+ 2. Generate a private key and save it
284
+ 3. Add secrets: `APP_ID`, `APP_PRIVATE_KEY`
285
+ 4. Add to workflow before `claude-code-action`:
286
+
287
+ ```yaml
288
+ - name: Generate GitHub App token
289
+ id: app-token
290
+ uses: actions/create-github-app-token@v2
291
+ with:
292
+ app-id: ${{ secrets.APP_ID }}
293
+ private-key: ${{ secrets.APP_PRIVATE_KEY }}
294
+
295
+ - uses: anthropics/claude-code-action@v1
296
+ with:
297
+ github_token: ${{ steps.app-token.outputs.token }}
298
+ anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
299
+ ```
300
+
301
+ ## GitLab CI
302
+
303
+ Create `.gitlab-ci.yml` (or append to existing):
304
+
305
+ ```yaml
306
+ claude-review:
307
+ stage: review
308
+ image: node:20-alpine
309
+ only:
310
+ - merge_requests
311
+ script:
312
+ - npm install -g @anthropic-ai/claude-code
313
+ - git diff origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME..HEAD > /tmp/diff.patch
314
+ - claude --print --max-turns 5 \
315
+ "Review this diff for security, correctness, and test coverage: $(cat /tmp/diff.patch). Post findings as a structured report."
316
+ variables:
317
+ ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY
318
+ ```
319
+
320
+ **Required:** Add `ANTHROPIC_API_KEY` to GitLab CI/CD Variables (Settings → CI/CD → Variables).
321
+
322
+ ## After Setup
323
+
324
+ 1. Commit the generated workflow files
325
+ 2. Add `ANTHROPIC_API_KEY` to repository secrets (Settings → Secrets → Actions → New secret)
326
+ 3. For quick setup, run `/install-github-app` in Claude Code to install the GitHub App automatically
327
+ 4. Test by tagging `@claude` in a PR or issue comment
328
+
329
+ ## Customizing Claude's Behavior
330
+
331
+ Claude reads `CLAUDE.md` in your repository root during CI runs. Add CI-specific rules there:
332
+
333
+ ```markdown
334
+ ## CI/CD Rules
335
+ - In PR reviews: focus on correctness and security — skip style comments
336
+ - In issue triage: always ask for reproduction steps for bug reports
337
+ - Maximum PR review length: 10 bullet points total
338
+ ```
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: sk:context
3
3
  description: "Session initializer — loads all project context files and outputs a formatted session brief. Run this at the start of every conversation to orient the AI and yourself."
4
+ model: haiku
4
5
  ---
5
6
 
6
7
  # /sk:context — Session Brief + Context Loader
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: sk:e2e
3
3
  description: "Run E2E behavioral verification as the final quality gate before finalize. Prefers Playwright CLI when playwright.config.ts is detected; falls back to agent-browser otherwise. Tests the complete, reviewed, secure implementation from a user's perspective."
4
+ model: sonnet
4
5
  ---
5
6
 
6
7
  # /sk:e2e
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: sk:fast-track
3
3
  description: Abbreviated workflow for small, clear changes — skip planning ceremony, keep all quality gates
4
- allowed_tools: Read, Write, Bash, Glob, Grep, Agent, Skill
4
+ allowed-tools: Read, Write, Bash, Glob, Grep, Agent, Skill
5
5
  ---
6
6
 
7
7
  # Fast-Track Flow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: sk:gates
3
3
  description: Run all quality gates in optimized parallel batches — one command instead of six
4
- allowed_tools: Agent, Read, Write, Bash, Glob, Grep
4
+ allowed-tools: Agent, Read, Write, Bash, Glob, Grep
5
5
  ---
6
6
 
7
7
  # Gates Orchestrator
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: sk:lint
3
3
  description: "Auto-detect and run all linting tools: formatters first (sequential), then analyzers in parallel. Fix and re-run until clean."
4
+ model: haiku
4
5
  ---
5
6
 
6
7
  # /sk:lint
@@ -2,6 +2,7 @@
2
2
  name: sk:perf
3
3
  description: Performance audit. Use before /sk:review to catch performance issues: bundle size, N+1 queries, slow DB queries, Core Web Vitals, memory leaks, caching opportunities. Auto-detects stack. Fixes critical/high in-scope findings and auto-commits. Logs pre-existing issues to tech-debt.
4
4
  license: Complete terms in LICENSE.txt
5
+ model: sonnet
5
6
  ---
6
7
 
7
8
  ## Purpose
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: sk:plugin
3
+ description: "Package your project's custom skills, agents, hooks, and MCP servers as a distributable Claude Code plugin with a plugin.json manifest. Helps teams share Claude Code customizations."
4
+ disable-model-invocation: true
5
+ argument-hint: "[--name <plugin-name>] [--output <dir>]"
6
+ ---
7
+
8
+ # /sk:plugin
9
+
10
+ Package your custom Claude Code skills, agents, hooks, and MCP servers as a distributable plugin.
11
+
12
+ > **Note for ShipKit users:** ShipKit itself is distributed via npm (`npx @kennethsolomon/shipkit`), not as a plugin — that gives you shorter `/sk:*` command names and global installation. This skill is for packaging YOUR OWN project-specific customizations to share with your team.
13
+
14
+ ## When to Use This
15
+
16
+ Use `/sk:plugin` when you have:
17
+ - Custom skills in `.claude/skills/` that your team wrote for your project
18
+ - Custom agents in `.claude/agents/` you want to share
19
+ - Hooks in `settings.json` you want to distribute
20
+ - MCP server configs in `.mcp.json` you want to bundle
21
+
22
+ **Don't use this** to re-package ShipKit itself — it's already on npm.
23
+
24
+ ## Step 1 — Discover What to Package
25
+
26
+ Scan the project for custom Claude Code assets:
27
+
28
+ ```bash
29
+ # Check for custom skills (not ShipKit skills)
30
+ ls ~/.claude/skills/ 2>/dev/null
31
+ ls .claude/skills/ 2>/dev/null
32
+
33
+ # Check for custom agents
34
+ ls .claude/agents/ 2>/dev/null
35
+
36
+ # Check for hooks in settings.json
37
+ cat .claude/settings.json 2>/dev/null | grep -A 20 '"hooks"'
38
+
39
+ # Check for MCP config
40
+ cat .mcp.json 2>/dev/null
41
+ cat .claude/mcp.json 2>/dev/null
42
+ ```
43
+
44
+ Report what was found. Ask the user:
45
+ > "I found: [N skills], [N agents], [N hooks], [N MCP servers]. Which should be included in the plugin?"
46
+
47
+ ## Step 2 — Gather Plugin Info
48
+
49
+ Ask:
50
+
51
+ ```
52
+ Plugin name (kebab-case, e.g. "my-team-tools"):
53
+ Plugin version (default: 1.0.0):
54
+ Plugin description (1 sentence):
55
+ Author (name or org):
56
+ ```
57
+
58
+ ## Step 3 — Create Plugin Structure
59
+
60
+ Create the plugin directory structure:
61
+
62
+ ```
63
+ <plugin-name>/
64
+ ├── plugin.json # manifest
65
+ ├── skills/ # selected skills
66
+ │ └── <skill-name>/
67
+ │ └── SKILL.md
68
+ ├── agents/ # selected agents
69
+ │ └── <agent-name>.md
70
+ ├── hooks/
71
+ │ └── hooks.json # selected hooks
72
+ ├── .mcp.json # MCP server configs (if any)
73
+ └── README.md # auto-generated install instructions
74
+ ```
75
+
76
+ ### plugin.json manifest
77
+
78
+ ```json
79
+ {
80
+ "name": "<plugin-name>",
81
+ "version": "1.0.0",
82
+ "description": "<description>",
83
+ "author": "<author>",
84
+ "skills": [
85
+ { "name": "<skill-name>", "path": "skills/<skill-name>/SKILL.md" }
86
+ ],
87
+ "agents": [
88
+ { "name": "<agent-name>", "path": "agents/<agent-name>.md" }
89
+ ],
90
+ "hooks": "hooks/hooks.json",
91
+ "mcp": ".mcp.json"
92
+ }
93
+ ```
94
+
95
+ ### hooks/hooks.json format
96
+
97
+ Convert from `settings.json` format:
98
+
99
+ ```json
100
+ {
101
+ "hooks": {
102
+ "PostToolUse": [
103
+ {
104
+ "matcher": "Write|Edit",
105
+ "hooks": [
106
+ { "type": "command", "command": "your-hook-command" }
107
+ ]
108
+ }
109
+ ]
110
+ }
111
+ }
112
+ ```
113
+
114
+ ## Step 4 — Copy Selected Assets
115
+
116
+ For each selected skill:
117
+ 1. Copy the skill directory to `<plugin-name>/skills/<skill-name>/`
118
+ 2. Update any hardcoded paths to use `${CLAUDE_SKILL_DIR}` for portability
119
+
120
+ For each selected agent:
121
+ 1. Copy the `.md` file to `<plugin-name>/agents/`
122
+ 2. Review for hardcoded project-specific paths
123
+
124
+ For hooks:
125
+ 1. Extract selected hooks from `settings.json`
126
+ 2. Write to `<plugin-name>/hooks/hooks.json`
127
+
128
+ For MCP:
129
+ 1. Copy relevant entries from `.mcp.json` to `<plugin-name>/.mcp.json`
130
+ 2. Replace hardcoded paths with `${CLAUDE_PLUGIN_DIR}` placeholders
131
+
132
+ ## Step 5 — Generate README.md
133
+
134
+ Create `<plugin-name>/README.md`:
135
+
136
+ ```markdown
137
+ # <plugin-name>
138
+
139
+ <description>
140
+
141
+ ## Install
142
+
143
+ ### Option 1: Copy to project
144
+ ```bash
145
+ cp -r <plugin-name>/.claude/skills/* .claude/skills/
146
+ cp -r <plugin-name>/.claude/agents/* .claude/agents/
147
+ ```
148
+
149
+ ### Option 2: Plugin install (when supported)
150
+ ```bash
151
+ # In Claude Code terminal:
152
+ /plugin install ./<plugin-name>
153
+ ```
154
+
155
+ ### Option 3: npm (if published)
156
+ ```bash
157
+ npx <plugin-name>
158
+ ```
159
+
160
+ ## Included
161
+
162
+ ### Skills
163
+ <list skills with descriptions>
164
+
165
+ ### Agents
166
+ <list agents with descriptions>
167
+
168
+ ### Hooks
169
+ <list hooks with what they do>
170
+
171
+ ## Configuration
172
+
173
+ <any required env vars or config>
174
+ ```
175
+
176
+ ## Step 6 — Validate
177
+
178
+ Check the plugin is well-formed:
179
+
180
+ ```bash
181
+ # All referenced files exist
182
+ # plugin.json is valid JSON
183
+ # Skills have valid frontmatter (name, description)
184
+ # Agents have valid frontmatter (name, description, model, tools)
185
+ # hooks.json follows the correct event/matcher format
186
+ ```
187
+
188
+ Report: "Plugin `<name>` created at `./<plugin-name>/` — N skills, N agents, N hooks."
189
+
190
+ ## Step 7 — Distribution Options
191
+
192
+ Present options:
193
+
194
+ **Option A — Share within team (simplest):**
195
+ ```bash
196
+ # Commit the plugin directory to your repo
197
+ git add <plugin-name>/
198
+ git commit -m "feat: add <plugin-name> Claude Code plugin"
199
+ # Team members run the setup script or copy manually
200
+ ```
201
+
202
+ **Option B — npm package:**
203
+ ```bash
204
+ # Add to package.json:
205
+ # "bin": { "<plugin-name>": "bin/install.js" }
206
+ # The install.js copies files to ~/.claude/skills/ and ~/.claude/agents/
207
+ npm publish
208
+ # Install: npx <plugin-name>
209
+ ```
210
+
211
+ **Option C — Future: Plugin marketplace**
212
+ When Anthropic launches a plugin marketplace, you'll be able to submit via:
213
+ `https://claude.ai/settings/plugins/submit`
214
+
215
+ ## Updating an Existing Plugin
216
+
217
+ If a `plugin.json` already exists in the target directory:
218
+ 1. Show a diff of what changed since last packaging
219
+ 2. Ask which changes to include
220
+ 3. Bump the patch version automatically
221
+ 4. Update README.md
@@ -1,6 +1,8 @@
1
1
  ---
2
2
  name: sk:release
3
3
  description: "Automate releases: bump version, update CHANGELOG, create git tag, push to GitHub. Supports --android and --ios flags to run a full App Store / Play Store readiness audit before release — checks configs, permissions, signing, icons, store listing requirements, and guides you step-by-step through fixes. Use this whenever someone wants to release, publish, deploy, or submit an app to the App Store, Play Store, Google Play, or Apple App Store."
4
+ disable-model-invocation: true
5
+ argument-hint: "[android|ios]"
4
6
  ---
5
7
 
6
8
  # Release Automation Skill
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: sk:retro
3
3
  description: Post-ship retrospective analyzing velocity, blockers, and patterns to generate actionable improvements
4
- allowed_tools: Read, Glob, Grep, Bash, Write
4
+ allowed-tools: Read, Glob, Grep, Bash, Write
5
5
  ---
6
6
 
7
7
  # Retrospective
@@ -1,7 +1,9 @@
1
1
  ---
2
2
  name: sk:reverse-doc
3
3
  description: Generate architecture and design documentation from existing code by analyzing patterns and asking clarifying questions
4
- allowed_tools: Read, Glob, Grep, Write, Agent
4
+ allowed-tools: Read, Glob, Grep, Write, Agent
5
+ context: fork
6
+ agent: general-purpose
5
7
  ---
6
8
 
7
9
  # Reverse Document
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: sk:review
3
3
  description: "Rigorous self-review of all branch changes across 7 dimensions: correctness, security, performance, reliability, design quality, best practices, and testing. Report-only — no PR creation (that's /sk:finish-feature's job). Use when code is complete and ready for review before merging."
4
+ model: sonnet
4
5
  ---
5
6
 
6
7
  # Self-Review
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: sk:scope-check
3
3
  description: Compare current implementation against the plan to detect scope creep
4
- allowed_tools: Read, Glob, Grep, Bash
4
+ allowed-tools: Read, Glob, Grep, Bash
5
5
  ---
6
6
 
7
7
  # Scope Check