@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.
- package/README.md +231 -1
- package/bin/shipkit.js +24 -4
- package/commands/sk/branch.md +1 -0
- package/commands/sk/finish-feature.md +1 -0
- package/commands/sk/hotfix.md +1 -0
- package/commands/sk/security-check.md +2 -1
- package/package.json +1 -1
- package/skills/sk:accessibility/SKILL.md +3 -0
- package/skills/sk:autopilot/SKILL.md +1 -1
- package/skills/sk:ci/SKILL.md +338 -0
- package/skills/sk:context/SKILL.md +1 -0
- package/skills/sk:e2e/SKILL.md +1 -0
- package/skills/sk:fast-track/SKILL.md +1 -1
- package/skills/sk:gates/SKILL.md +1 -1
- package/skills/sk:lint/SKILL.md +1 -0
- package/skills/sk:perf/SKILL.md +1 -0
- package/skills/sk:plugin/SKILL.md +221 -0
- package/skills/sk:release/SKILL.md +2 -0
- package/skills/sk:retro/SKILL.md +1 -1
- package/skills/sk:reverse-doc/SKILL.md +3 -1
- package/skills/sk:review/SKILL.md +1 -0
- package/skills/sk:scope-check/SKILL.md +1 -1
- package/skills/sk:security-check/SKILL.md +219 -0
- package/skills/sk:seo-audit/SKILL.md +3 -0
- package/skills/sk:setup-claude/templates/.claude/agents/architect.md +62 -0
- package/skills/sk:setup-claude/templates/.claude/agents/backend-dev.md +3 -1
- package/skills/sk:setup-claude/templates/.claude/agents/code-reviewer.md +38 -0
- package/skills/sk:setup-claude/templates/.claude/agents/database-architect.md +69 -0
- package/skills/sk:setup-claude/templates/.claude/agents/debugger.md +26 -0
- package/skills/sk:setup-claude/templates/.claude/agents/devops-engineer.md +51 -0
- package/skills/sk:setup-claude/templates/.claude/agents/e2e-tester.md +1 -1
- package/skills/sk:setup-claude/templates/.claude/agents/frontend-dev.md +3 -1
- package/skills/sk:setup-claude/templates/.claude/agents/linter.md +1 -1
- package/skills/sk:setup-claude/templates/.claude/agents/mobile-dev.md +49 -0
- package/skills/sk:setup-claude/templates/.claude/agents/perf-auditor.md +1 -1
- package/skills/sk:setup-claude/templates/.claude/agents/performance-optimizer.md +72 -0
- package/skills/sk:setup-claude/templates/.claude/agents/qa-engineer.md +3 -1
- package/skills/sk:setup-claude/templates/.claude/agents/refactor-specialist.md +67 -0
- package/skills/sk:setup-claude/templates/.claude/agents/security-auditor.md +2 -1
- package/skills/sk:setup-claude/templates/.claude/agents/tech-writer.md +60 -0
- package/skills/sk:setup-claude/templates/.claude/agents/test-runner.md +2 -1
- package/skills/sk:setup-claude/templates/.claude/rules/api.md.template +9 -3
- package/skills/sk:setup-claude/templates/.claude/rules/frontend.md.template +9 -3
- package/skills/sk:setup-claude/templates/.claude/rules/laravel.md.template +8 -3
- package/skills/sk:setup-claude/templates/.claude/rules/migrations.md.template +24 -0
- package/skills/sk:setup-claude/templates/.claude/rules/react.md.template +8 -3
- package/skills/sk:setup-claude/templates/.claude/rules/tests.md.template +12 -3
- package/skills/sk:setup-claude/templates/.claude/rules/vue.md.template +22 -0
- package/skills/sk:setup-optimizer/SKILL.md +61 -2
- package/skills/sk:smart-commit/SKILL.md +1 -0
- package/skills/sk:start/SKILL.md +1 -1
- package/skills/sk:team/SKILL.md +1 -1
- package/skills/sk:website/SKILL.md +1 -0
- package/commands/sk/autopilot.md +0 -22
- package/commands/sk/context-budget.md +0 -5
- package/commands/sk/eval.md +0 -5
- package/commands/sk/health.md +0 -5
- package/commands/sk/learn.md +0 -5
- package/commands/sk/resume-session.md +0 -5
- package/commands/sk/safety-guard.md +0 -5
- package/commands/sk/save-session.md +0 -5
- package/commands/sk/start.md +0 -30
- package/commands/sk/team.md +0 -23
- 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
|
package/skills/sk:e2e/SKILL.md
CHANGED
|
@@ -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
|
-
|
|
4
|
+
allowed-tools: Read, Write, Bash, Glob, Grep, Agent, Skill
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Fast-Track Flow
|
package/skills/sk:gates/SKILL.md
CHANGED
package/skills/sk:lint/SKILL.md
CHANGED
package/skills/sk:perf/SKILL.md
CHANGED
|
@@ -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
|
package/skills/sk:retro/SKILL.md
CHANGED
|
@@ -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
|
-
|
|
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
|