specweave 0.23.16 → 0.24.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/.claude-plugin/marketplace.json +93 -38
- package/CLAUDE.md +159 -11
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +57 -0
- package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
- package/dist/src/cli/commands/sync-spec-content.js +3 -0
- package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
- package/dist/src/cli/helpers/ado-area-path-mapper.d.ts +89 -0
- package/dist/src/cli/helpers/ado-area-path-mapper.d.ts.map +1 -0
- package/dist/src/cli/helpers/ado-area-path-mapper.js +213 -0
- package/dist/src/cli/helpers/ado-area-path-mapper.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.d.ts +29 -0
- package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.d.ts.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.js +109 -0
- package/dist/src/cli/helpers/issue-tracker/ado-auto-discover.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts +1 -0
- package/dist/src/cli/helpers/issue-tracker/ado.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/ado.js +2 -0
- package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
- package/dist/src/cli/helpers/smart-filter.d.ts +83 -0
- package/dist/src/cli/helpers/smart-filter.d.ts.map +1 -0
- package/dist/src/cli/helpers/smart-filter.js +265 -0
- package/dist/src/cli/helpers/smart-filter.js.map +1 -0
- package/dist/src/core/progress/progress-tracker.d.ts +4 -1
- package/dist/src/core/progress/progress-tracker.d.ts.map +1 -1
- package/dist/src/core/progress/progress-tracker.js +33 -4
- package/dist/src/core/progress/progress-tracker.js.map +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts +1 -1
- package/dist/src/core/qa/quality-gate-decider.js +2 -2
- package/dist/src/core/qa/quality-gate-decider.js.map +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts +2 -2
- package/dist/src/core/qa/risk-calculator.js +2 -2
- package/dist/src/core/spec-content-sync.d.ts +1 -1
- package/dist/src/core/spec-content-sync.d.ts.map +1 -1
- package/dist/src/core/validators/ac-presence-validator.d.ts +56 -0
- package/dist/src/core/validators/ac-presence-validator.d.ts.map +1 -0
- package/dist/src/core/validators/ac-presence-validator.js +149 -0
- package/dist/src/core/validators/ac-presence-validator.js.map +1 -0
- package/dist/src/integrations/ado/ado-dependency-loader.d.ts +1 -1
- package/dist/src/integrations/ado/ado-dependency-loader.d.ts.map +1 -1
- package/dist/src/integrations/ado/ado-dependency-loader.js +39 -7
- package/dist/src/integrations/ado/ado-dependency-loader.js.map +1 -1
- package/dist/src/integrations/ado/area-path-mapper.d.ts +137 -0
- package/dist/src/integrations/ado/area-path-mapper.d.ts.map +1 -0
- package/dist/src/integrations/ado/area-path-mapper.js +267 -0
- package/dist/src/integrations/ado/area-path-mapper.js.map +1 -0
- package/dist/src/integrations/jira/filter-processor.d.ts +126 -0
- package/dist/src/integrations/jira/filter-processor.d.ts.map +1 -0
- package/dist/src/integrations/jira/filter-processor.js +207 -0
- package/dist/src/integrations/jira/filter-processor.js.map +1 -0
- package/dist/src/integrations/jira/jira-client.d.ts +13 -0
- package/dist/src/integrations/jira/jira-client.d.ts.map +1 -1
- package/dist/src/integrations/jira/jira-client.js +33 -0
- package/dist/src/integrations/jira/jira-client.js.map +1 -1
- package/dist/src/utils/ac-embedder.d.ts +63 -0
- package/dist/src/utils/ac-embedder.d.ts.map +1 -0
- package/dist/src/utils/ac-embedder.js +217 -0
- package/dist/src/utils/ac-embedder.js.map +1 -0
- package/dist/src/utils/env-manager.d.ts +86 -0
- package/dist/src/utils/env-manager.d.ts.map +1 -0
- package/dist/src/utils/env-manager.js +188 -0
- package/dist/src/utils/env-manager.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/agents/AGENTS-INDEX.md +1 -1
- package/plugins/specweave/agents/increment-quality-judge-v2/AGENT.md +9 -9
- package/plugins/specweave/commands/specweave-do.md +37 -0
- package/plugins/specweave/commands/specweave-done.md +159 -0
- package/plugins/specweave/commands/specweave-embed-acs.md +446 -0
- package/plugins/specweave/commands/specweave-next.md +148 -3
- package/plugins/specweave/commands/specweave-qa.md +2 -2
- package/plugins/specweave/hooks/lib/migrate-increment-work.sh +1 -1
- package/plugins/specweave/hooks/lib/migrate-increment-work.sh.bak +245 -0
- package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
- package/plugins/specweave/hooks/lib/sync-spec-content.sh.bak +149 -0
- package/plugins/specweave/hooks/lib/update-status-line.sh +34 -4
- package/plugins/specweave/hooks/lib/validate-spec-status.sh +1 -1
- package/plugins/specweave/hooks/lib/validate-spec-status.sh.bak +163 -0
- package/plugins/specweave/hooks/post-first-increment.sh +1 -1
- package/plugins/specweave/hooks/post-first-increment.sh.bak +61 -0
- package/plugins/specweave/hooks/post-spec-update.sh +1 -1
- package/plugins/specweave/hooks/post-spec-update.sh.bak +158 -0
- package/plugins/specweave/hooks/post-user-story-complete.sh +1 -1
- package/plugins/specweave/hooks/post-user-story-complete.sh.bak +179 -0
- package/plugins/specweave/hooks/pre-command-deduplication.sh +1 -1
- package/plugins/specweave/hooks/pre-command-deduplication.sh.bak +83 -0
- package/plugins/specweave/hooks/pre-increment-start.sh +168 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
- package/plugins/specweave/hooks/user-prompt-submit.sh.bak +386 -0
- package/plugins/specweave/skills/SKILLS-INDEX.md +1 -1
- package/plugins/specweave/skills/specweave-framework/SKILL.md +1 -1
- package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-ado/agents/ado-manager/AGENT.md +23 -0
- package/plugins/specweave-ado/agents/ado-multi-project-mapper/AGENT.md +23 -0
- package/plugins/specweave-ado/agents/ado-sync-judge/AGENT.md +23 -0
- package/plugins/specweave-ado/commands/specweave-ado-import-projects.md +331 -0
- package/plugins/specweave-alternatives/.claude-plugin/plugin.json +10 -0
- package/plugins/specweave-alternatives/commands/alternatives-analyze.md +336 -0
- package/plugins/specweave-alternatives/skills/architecture-alternatives/SKILL.md +651 -0
- package/plugins/specweave-alternatives/skills/bmad-method/SKILL.md +420 -0
- package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +487 -0
- package/plugins/specweave-backend/agents/database-optimizer/AGENT.md +23 -0
- package/plugins/specweave-backend/commands/api-scaffold.md +80 -0
- package/plugins/specweave-backend/commands/crud-generate.md +109 -0
- package/plugins/specweave-backend/commands/migration-generate.md +139 -0
- package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +23 -0
- package/plugins/specweave-confluent/commands/connector-deploy.md +154 -0
- package/plugins/specweave-confluent/commands/ksqldb-query.md +179 -0
- package/plugins/specweave-confluent/commands/schema-register.md +123 -0
- package/plugins/specweave-core/.claude-plugin/plugin.json +21 -0
- package/plugins/specweave-core/commands/architecture-review.md +288 -0
- package/plugins/specweave-core/commands/code-review.md +213 -0
- package/plugins/specweave-core/commands/refactor-plan.md +249 -0
- package/plugins/specweave-core/skills/code-quality/SKILL.md +157 -0
- package/plugins/specweave-core/skills/design-patterns/SKILL.md +244 -0
- package/plugins/specweave-core/skills/software-architecture/SKILL.md +83 -0
- package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +22 -0
- package/plugins/specweave-cost-optimizer/commands/cost-analyze.md +360 -0
- package/plugins/specweave-cost-optimizer/commands/cost-optimize.md +480 -0
- package/plugins/specweave-cost-optimizer/skills/aws-cost-expert/SKILL.md +416 -0
- package/plugins/specweave-cost-optimizer/skills/cloud-pricing/SKILL.md +325 -0
- package/plugins/specweave-cost-optimizer/skills/cost-optimization/SKILL.md +337 -0
- package/plugins/specweave-diagrams/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-diagrams/agents/diagrams-architect/AGENT.md +23 -0
- package/plugins/specweave-diagrams/commands/diagrams-generate.md +168 -0
- package/plugins/specweave-docs/.claude-plugin/plugin.json +10 -0
- package/plugins/specweave-docs/commands/docs-generate.md +441 -0
- package/plugins/specweave-docs/commands/docs-init.md +334 -0
- package/plugins/specweave-docs/skills/docusaurus/SKILL.md +581 -0
- package/plugins/specweave-docs/skills/spec-driven-brainstorming/SKILL.md +689 -0
- package/plugins/specweave-docs/skills/technical-writing/SKILL.md +1039 -0
- package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-figma/.claude-plugin/plugin.json +23 -0
- package/plugins/specweave-figma/commands/figma-import.md +690 -0
- package/plugins/specweave-figma/commands/figma-to-react.md +834 -0
- package/plugins/specweave-figma/commands/figma-tokens.md +815 -0
- package/plugins/specweave-frontend/.claude-plugin/plugin.json +21 -0
- package/plugins/specweave-frontend/agents/frontend-architect/AGENT.md +387 -0
- package/plugins/specweave-frontend/agents/frontend-architect/README.md +385 -0
- package/plugins/specweave-frontend/agents/frontend-architect/examples.md +590 -0
- package/plugins/specweave-frontend/agents/frontend-architect/templates/component-template.tsx +152 -0
- package/plugins/specweave-frontend/agents/frontend-architect/templates/hook-template.ts +311 -0
- package/plugins/specweave-frontend/agents/frontend-architect/templates/page-template.tsx +228 -0
- package/plugins/specweave-frontend/commands/component-generate.md +510 -0
- package/plugins/specweave-frontend/commands/design-system-init.md +494 -0
- package/plugins/specweave-frontend/commands/frontend-scaffold.md +207 -0
- package/plugins/specweave-frontend/commands/nextjs-setup.md +396 -0
- package/plugins/specweave-frontend/skills/design-system-architect/SKILL.md +278 -0
- package/plugins/specweave-frontend/skills/frontend/SKILL.md +420 -0
- package/plugins/specweave-frontend/skills/nextjs/SKILL.md +546 -0
- package/plugins/specweave-github/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-github/agents/github-manager/AGENT.md +23 -0
- package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +25 -0
- package/plugins/specweave-github/agents/user-story-updater/AGENT.md +25 -0
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +194 -0
- package/plugins/specweave-github/lib/github-spec-content-sync.js +49 -0
- package/plugins/specweave-github/lib/github-spec-content-sync.ts +67 -0
- package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-infrastructure/agents/devops/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/network-engineer/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/observability-engineer/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/performance-engineer/AGENT.md +26 -0
- package/plugins/specweave-infrastructure/agents/sre/AGENT.md +26 -0
- package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-jira/agents/jira-manager/AGENT.md +26 -0
- package/plugins/specweave-jira/commands/import-projects.js +183 -0
- package/plugins/specweave-jira/commands/import-projects.md +97 -0
- package/plugins/specweave-jira/commands/import-projects.ts +288 -0
- package/plugins/specweave-jira/commands/specweave-jira-import-projects.md +298 -0
- package/plugins/specweave-kafka/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +26 -0
- package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +26 -0
- package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +26 -0
- package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-kubernetes/agents/kubernetes-architect/AGENT.md +26 -0
- package/plugins/specweave-kubernetes/commands/cluster-setup.md +262 -0
- package/plugins/specweave-kubernetes/commands/deployment-generate.md +242 -0
- package/plugins/specweave-kubernetes/commands/helm-scaffold.md +333 -0
- package/plugins/specweave-ml/.claude-plugin/plugin.json +3 -3
- package/plugins/specweave-ml/agents/data-scientist/AGENT.md +26 -0
- package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +26 -0
- package/plugins/specweave-ml/agents/mlops-engineer/AGENT.md +26 -0
- package/plugins/specweave-mobile/agents/mobile-architect/AGENT.md +26 -0
- package/plugins/specweave-mobile/commands/app-scaffold.md +233 -0
- package/plugins/specweave-mobile/commands/build-config.md +256 -0
- package/plugins/specweave-mobile/commands/screen-generate.md +289 -0
- package/plugins/specweave-n8n/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-payments/agents/payment-integration/AGENT.md +26 -0
- package/plugins/specweave-plugin-dev/.claude-plugin/plugin.json +20 -0
- package/plugins/specweave-plugin-dev/commands/plugin-create.md +333 -0
- package/plugins/specweave-plugin-dev/commands/plugin-publish.md +339 -0
- package/plugins/specweave-plugin-dev/commands/plugin-test.md +293 -0
- package/plugins/specweave-plugin-dev/skills/claude-sdk/SKILL.md +162 -0
- package/plugins/specweave-plugin-dev/skills/marketplace-publishing/SKILL.md +263 -0
- package/plugins/specweave-plugin-dev/skills/plugin-development/SKILL.md +316 -0
- package/plugins/specweave-release/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave-release/agents/release-manager/AGENT.md +27 -0
- package/plugins/specweave-release/commands/specweave-release-npm.md +110 -0
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +168 -0
- package/plugins/specweave-testing/.claude-plugin/plugin.json +21 -0
- package/plugins/specweave-testing/agents/qa-engineer/AGENT.md +797 -0
- package/plugins/specweave-testing/agents/qa-engineer/README.md +443 -0
- package/plugins/specweave-testing/agents/qa-engineer/templates/playwright-e2e-test.ts +470 -0
- package/plugins/specweave-testing/agents/qa-engineer/templates/test-data-factory.ts +507 -0
- package/plugins/specweave-testing/agents/qa-engineer/templates/vitest-unit-test.ts +400 -0
- package/plugins/specweave-testing/agents/qa-engineer/test-strategies.md +726 -0
- package/plugins/specweave-testing/commands/e2e-setup.md +1081 -0
- package/plugins/specweave-testing/commands/test-coverage.md +979 -0
- package/plugins/specweave-testing/commands/test-generate.md +1156 -0
- package/plugins/specweave-testing/commands/test-init.md +409 -0
- package/plugins/specweave-testing/skills/e2e-playwright/SKILL.md +769 -0
- package/plugins/specweave-testing/skills/tdd-expert/SKILL.md +934 -0
- package/plugins/specweave-testing/skills/unit-testing-expert/SKILL.md +1011 -0
- package/plugins/specweave-tooling/.claude-plugin/plugin.json +22 -0
- package/plugins/specweave-tooling/commands/specweave-tooling-skill-create.md +691 -0
- package/plugins/specweave-tooling/commands/specweave-tooling-skill-package.md +751 -0
- package/plugins/specweave-tooling/commands/specweave-tooling-skill-validate.md +858 -0
- package/plugins/specweave-ui/.claude-plugin/plugin.json +10 -0
- package/plugins/specweave-ui/commands/ui-automate.md +199 -0
- package/plugins/specweave-ui/commands/ui-inspect.md +70 -0
- package/plugins/specweave-ui/skills/browser-automation/SKILL.md +314 -0
- package/plugins/specweave-ui/skills/ui-testing/SKILL.md +716 -0
- package/plugins/specweave-ui/skills/visual-regression/SKILL.md +728 -0
- package/plugins/specweave/commands/check-hooks.md +0 -257
- package/plugins/specweave/commands/specweave-archive-increments.md +0 -82
- package/plugins/specweave/skills/plugin-expert/SKILL.md +0 -340
- /package/plugins/specweave/{agents/code-reviewer.md → skills/code-reviewer/SKILL.md} +0 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# /specweave-plugin-dev:plugin-test
|
|
2
|
+
|
|
3
|
+
Test Claude Code plugins for correctness, activation, and best practices compliance.
|
|
4
|
+
|
|
5
|
+
You are an expert plugin tester who validates plugin structure and functionality.
|
|
6
|
+
|
|
7
|
+
## Your Task
|
|
8
|
+
|
|
9
|
+
Validate plugin structure, test activation, and verify best practices compliance.
|
|
10
|
+
|
|
11
|
+
### 1. Validation Checklist
|
|
12
|
+
|
|
13
|
+
**File Structure**:
|
|
14
|
+
```bash
|
|
15
|
+
# Check plugin exists
|
|
16
|
+
ls ~/.claude/plugins/my-plugin
|
|
17
|
+
|
|
18
|
+
# Verify structure
|
|
19
|
+
tree ~/.claude/plugins/my-plugin
|
|
20
|
+
# Expected:
|
|
21
|
+
# .claude-plugin/plugin.json ✓
|
|
22
|
+
# commands/*.md ✓
|
|
23
|
+
# skills/*/SKILL.md ✓
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**plugin.json Validation**:
|
|
27
|
+
```typescript
|
|
28
|
+
interface PluginManifest {
|
|
29
|
+
name: string; // Required: kebab-case
|
|
30
|
+
description: string; // Required: activation keywords
|
|
31
|
+
version: string; // Required: semver
|
|
32
|
+
author?: {
|
|
33
|
+
name: string;
|
|
34
|
+
email: string;
|
|
35
|
+
};
|
|
36
|
+
keywords?: string[];
|
|
37
|
+
homepage?: string;
|
|
38
|
+
repository?: string;
|
|
39
|
+
license?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Validate
|
|
43
|
+
const plugin = JSON.parse(fs.readFileSync('.claude-plugin/plugin.json'));
|
|
44
|
+
assert(plugin.name.match(/^[a-z0-9-]+$/), 'Name must be kebab-case');
|
|
45
|
+
assert(plugin.description.length > 20, 'Description too short');
|
|
46
|
+
assert(semver.valid(plugin.version), 'Invalid version');
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Command Validation**:
|
|
50
|
+
```bash
|
|
51
|
+
# Check header format
|
|
52
|
+
grep -E '^# /[a-z0-9-]+:[a-z0-9-]+$' commands/*.md
|
|
53
|
+
|
|
54
|
+
# Verify no YAML frontmatter in commands
|
|
55
|
+
! grep -l '^---$' commands/*.md
|
|
56
|
+
|
|
57
|
+
# Check for clear instructions
|
|
58
|
+
grep -A 20 '## Your Task' commands/*.md
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Skill Validation**:
|
|
62
|
+
```bash
|
|
63
|
+
# Check YAML frontmatter
|
|
64
|
+
grep -l '^---$' skills/*/SKILL.md
|
|
65
|
+
|
|
66
|
+
# Validate activation keywords
|
|
67
|
+
grep 'Activates for' skills/*/SKILL.md
|
|
68
|
+
|
|
69
|
+
# Verify subdirectory structure
|
|
70
|
+
find skills -name 'SKILL.md' -not -path 'skills/*/SKILL.md' # Should be empty
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 2. Activation Testing
|
|
74
|
+
|
|
75
|
+
**Test Slash Command**:
|
|
76
|
+
```bash
|
|
77
|
+
# In Claude Code:
|
|
78
|
+
# 1. Type "/"
|
|
79
|
+
# 2. Verify command appears in autocomplete
|
|
80
|
+
# 3. Execute: /my-plugin:my-command
|
|
81
|
+
# 4. Verify behavior matches documentation
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Test Skill Auto-Activation**:
|
|
85
|
+
```bash
|
|
86
|
+
# Test each activation keyword
|
|
87
|
+
echo "Testing skill activation..."
|
|
88
|
+
|
|
89
|
+
# Skill: cost-optimization
|
|
90
|
+
# Keywords: reduce costs, save money, cloud costs, finops
|
|
91
|
+
# Test: Ask "How can I reduce my AWS costs?"
|
|
92
|
+
# Expected: Skill activates, provides cost optimization advice
|
|
93
|
+
|
|
94
|
+
# Skill: python-expert
|
|
95
|
+
# Keywords: python, optimize python, speed up python
|
|
96
|
+
# Test: Ask "How do I speed up my Python code?"
|
|
97
|
+
# Expected: Skill activates, provides optimization tips
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Test Agent Invocation**:
|
|
101
|
+
```typescript
|
|
102
|
+
// Verify agent exists
|
|
103
|
+
const agentPath = '~/.claude/plugins/my-plugin/agents/my-agent/AGENT.md';
|
|
104
|
+
assert(fs.existsSync(agentPath), 'Agent file missing');
|
|
105
|
+
|
|
106
|
+
// Test invocation syntax
|
|
107
|
+
Task({
|
|
108
|
+
subagent_type: "my-plugin:my-agent:my-agent", // plugin:folder:yaml-name
|
|
109
|
+
prompt: "Test agent invocation"
|
|
110
|
+
});
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 3. Best Practices Validation
|
|
114
|
+
|
|
115
|
+
**Naming Convention Check**:
|
|
116
|
+
```bash
|
|
117
|
+
# Plugin name: kebab-case only
|
|
118
|
+
echo "my-plugin" | grep -E '^[a-z0-9-]+$' ✓
|
|
119
|
+
echo "MyPlugin" | grep -E '^[a-z0-9-]+$' ✗ # No CamelCase
|
|
120
|
+
|
|
121
|
+
# Command names: kebab-case
|
|
122
|
+
echo "analyze-costs" | grep -E '^[a-z0-9-]+$' ✓
|
|
123
|
+
echo "analyzeCosts" | grep -E '^[a-z0-9-]+$' ✗ # No camelCase
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Activation Keyword Quality**:
|
|
127
|
+
```yaml
|
|
128
|
+
# ✅ Good: Specific, varied keywords
|
|
129
|
+
description: Expert cost optimization. Activates for reduce costs, save money, aws costs, cloud spending, finops, cost analysis, budget optimization.
|
|
130
|
+
|
|
131
|
+
# ⚠️ Weak: Too few keywords
|
|
132
|
+
description: Cost expert. Activates for costs.
|
|
133
|
+
|
|
134
|
+
# ❌ Bad: No keywords
|
|
135
|
+
description: Cost optimization plugin.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Documentation Quality**:
|
|
139
|
+
```markdown
|
|
140
|
+
# Check for:
|
|
141
|
+
- [ ] Clear "Your Task" section
|
|
142
|
+
- [ ] Code examples with syntax highlighting
|
|
143
|
+
- [ ] Workflow/steps
|
|
144
|
+
- [ ] "When to Use" section
|
|
145
|
+
- [ ] Example usage
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 4. Integration Testing
|
|
149
|
+
|
|
150
|
+
**Test Plugin Loading**:
|
|
151
|
+
```bash
|
|
152
|
+
# Check Claude Code logs
|
|
153
|
+
tail -f ~/.claude/logs/claude.log | grep 'my-plugin'
|
|
154
|
+
|
|
155
|
+
# Expected output:
|
|
156
|
+
# ✅ "Loaded plugin: my-plugin"
|
|
157
|
+
# ✅ "Registered command: /my-plugin:my-command"
|
|
158
|
+
# ✅ "Registered skill: my-skill"
|
|
159
|
+
|
|
160
|
+
# Red flags:
|
|
161
|
+
# ❌ "Failed to parse plugin.json"
|
|
162
|
+
# ❌ "YAML parsing error in SKILL.md"
|
|
163
|
+
# ❌ "Command header malformed"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Test Cross-Plugin Compatibility**:
|
|
167
|
+
```bash
|
|
168
|
+
# Ensure no conflicts with other plugins
|
|
169
|
+
ls ~/.claude/plugins/
|
|
170
|
+
|
|
171
|
+
# Check for:
|
|
172
|
+
- Name collisions (same plugin name)
|
|
173
|
+
- Command collisions (same /command)
|
|
174
|
+
- Skill keyword overlap (acceptable, but note)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 5. Performance Testing
|
|
178
|
+
|
|
179
|
+
**Skill Activation Speed**:
|
|
180
|
+
```bash
|
|
181
|
+
# Skills should activate in < 100ms
|
|
182
|
+
# Monitor: Does Claude Code lag when typing trigger keywords?
|
|
183
|
+
|
|
184
|
+
# If slow:
|
|
185
|
+
# - Reduce skill description length
|
|
186
|
+
# - Optimize SKILL.md size (< 50KB)
|
|
187
|
+
# - Avoid complex regex in activation patterns
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**Command Execution**:
|
|
191
|
+
```bash
|
|
192
|
+
# Commands should provide first response in < 2s
|
|
193
|
+
# Test with: /my-plugin:my-command
|
|
194
|
+
|
|
195
|
+
# If slow:
|
|
196
|
+
# - Check for expensive operations in command instructions
|
|
197
|
+
# - Optimize prompt length
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 6. Security Review
|
|
201
|
+
|
|
202
|
+
**Secret Detection**:
|
|
203
|
+
```bash
|
|
204
|
+
# Check for hardcoded secrets
|
|
205
|
+
grep -r 'API_KEY\|SECRET\|PASSWORD\|TOKEN' .
|
|
206
|
+
|
|
207
|
+
# ❌ Hardcoded secrets
|
|
208
|
+
const API_KEY = 'sk-1234567890abcdef';
|
|
209
|
+
|
|
210
|
+
# ✅ Environment variables
|
|
211
|
+
const API_KEY = process.env.API_KEY;
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Input Validation**:
|
|
215
|
+
```bash
|
|
216
|
+
# Ensure commands validate user input
|
|
217
|
+
grep -r 'validate\|sanitize\|escape' commands/
|
|
218
|
+
|
|
219
|
+
# Commands that execute code should warn about risks
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### 7. Testing Workflow
|
|
223
|
+
|
|
224
|
+
**Manual Testing**:
|
|
225
|
+
1. Install plugin: `cp -r my-plugin ~/.claude/plugins/`
|
|
226
|
+
2. Restart Claude Code
|
|
227
|
+
3. Test commands: `/my-plugin:command`
|
|
228
|
+
4. Test skills: Ask trigger questions
|
|
229
|
+
5. Test agents: Use Task() tool
|
|
230
|
+
6. Check logs: `~/.claude/logs/`
|
|
231
|
+
|
|
232
|
+
**Automated Testing** (if applicable):
|
|
233
|
+
```bash
|
|
234
|
+
# Validation script
|
|
235
|
+
#!/bin/bash
|
|
236
|
+
|
|
237
|
+
PLUGIN_DIR="my-plugin"
|
|
238
|
+
|
|
239
|
+
# Check structure
|
|
240
|
+
test -f "$PLUGIN_DIR/.claude-plugin/plugin.json" || exit 1
|
|
241
|
+
test -d "$PLUGIN_DIR/commands" || exit 1
|
|
242
|
+
test -d "$PLUGIN_DIR/skills" || exit 1
|
|
243
|
+
|
|
244
|
+
# Validate JSON
|
|
245
|
+
jq . "$PLUGIN_DIR/.claude-plugin/plugin.json" > /dev/null || exit 1
|
|
246
|
+
|
|
247
|
+
# Check SKILL.md files
|
|
248
|
+
find "$PLUGIN_DIR/skills" -name 'SKILL.md' -path '*/*/SKILL.md' | wc -l
|
|
249
|
+
|
|
250
|
+
# Validate YAML frontmatter
|
|
251
|
+
for skill in "$PLUGIN_DIR/skills"/*/SKILL.md; do
|
|
252
|
+
head -n 5 "$skill" | grep -q '^---$' || echo "Missing YAML: $skill"
|
|
253
|
+
done
|
|
254
|
+
|
|
255
|
+
echo "✅ Plugin validation passed"
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### 8. Common Issues
|
|
259
|
+
|
|
260
|
+
**Issue: Command not appearing**
|
|
261
|
+
```bash
|
|
262
|
+
# Check header format
|
|
263
|
+
# ❌ Wrong: # my-plugin:my-command
|
|
264
|
+
# ❌ Wrong: # /myPlugin:myCommand
|
|
265
|
+
# ✅ Correct: # /my-plugin:my-command
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Issue: Skill not activating**
|
|
269
|
+
```bash
|
|
270
|
+
# Check:
|
|
271
|
+
1. YAML frontmatter present?
|
|
272
|
+
2. Activation keywords in description?
|
|
273
|
+
3. SKILL.md in subdirectory?
|
|
274
|
+
4. Claude Code restarted after changes?
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Issue: YAML parsing error**
|
|
278
|
+
```bash
|
|
279
|
+
# Common causes:
|
|
280
|
+
- Unclosed quotes: description: "Missing end quote
|
|
281
|
+
- Invalid characters: name: my_skill (use hyphens)
|
|
282
|
+
- Missing closing ---
|
|
283
|
+
- Incorrect indentation
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## When to Use
|
|
287
|
+
|
|
288
|
+
- After creating/modifying plugins
|
|
289
|
+
- Before publishing to marketplace
|
|
290
|
+
- Debugging plugin activation issues
|
|
291
|
+
- Pre-release quality assurance
|
|
292
|
+
|
|
293
|
+
Test plugins thoroughly before release!
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-sdk
|
|
3
|
+
description: Expert knowledge of Claude Code SDK, API, tools (Read, Write, Edit, Bash, Grep, Glob), agent tools (Task, Skill, SlashCommand), plugin hooks, MCP integration, and Claude Code extension development. Activates for claude sdk, claude api, claude tools, Read tool, Write tool, Edit tool, Task tool, Skill tool, claude hooks, MCP, claude code api.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Claude SDK Expert
|
|
7
|
+
|
|
8
|
+
Expert knowledge of Claude Code SDK, tools, and extension development.
|
|
9
|
+
|
|
10
|
+
## Core Tools
|
|
11
|
+
|
|
12
|
+
**File Operations**:
|
|
13
|
+
```typescript
|
|
14
|
+
// Read files
|
|
15
|
+
Read({ file_path: '/absolute/path/file.ts' });
|
|
16
|
+
|
|
17
|
+
// Write files (creates new or overwrites)
|
|
18
|
+
Write({
|
|
19
|
+
file_path: '/absolute/path/file.ts',
|
|
20
|
+
content: 'export const hello = () => "world";'
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Edit files (precise replacements)
|
|
24
|
+
Edit({
|
|
25
|
+
file_path: '/absolute/path/file.ts',
|
|
26
|
+
old_string: 'const x = 1;',
|
|
27
|
+
new_string: 'const x = 2;'
|
|
28
|
+
});
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Search**:
|
|
32
|
+
```typescript
|
|
33
|
+
// Find files by pattern
|
|
34
|
+
Glob({ pattern: '**/*.ts' });
|
|
35
|
+
|
|
36
|
+
// Search file contents
|
|
37
|
+
Grep({
|
|
38
|
+
pattern: 'TODO',
|
|
39
|
+
output_mode: 'files_with_matches'
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Search with context
|
|
43
|
+
Grep({
|
|
44
|
+
pattern: 'function.*export',
|
|
45
|
+
output_mode: 'content',
|
|
46
|
+
'-C': 3, // 3 lines before/after
|
|
47
|
+
'-n': true // Line numbers
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Execution**:
|
|
52
|
+
```typescript
|
|
53
|
+
// Run commands
|
|
54
|
+
Bash({
|
|
55
|
+
command: 'npm test',
|
|
56
|
+
description: 'Run test suite'
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Background processes
|
|
60
|
+
Bash({
|
|
61
|
+
command: 'npm run dev',
|
|
62
|
+
run_in_background: true
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Agent Tools
|
|
67
|
+
|
|
68
|
+
**Sub-agents**:
|
|
69
|
+
```typescript
|
|
70
|
+
// Invoke specialized sub-agent
|
|
71
|
+
Task({
|
|
72
|
+
subagent_type: 'plugin:agent-folder:agent-name',
|
|
73
|
+
prompt: 'Analyze this architecture'
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Skills**:
|
|
78
|
+
```typescript
|
|
79
|
+
// Activate skill explicitly
|
|
80
|
+
Skill({ skill: 'skill-name' });
|
|
81
|
+
|
|
82
|
+
// Or let auto-activation handle it
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Commands**:
|
|
86
|
+
```typescript
|
|
87
|
+
// Execute slash command
|
|
88
|
+
SlashCommand({ command: '/plugin:command arg1 arg2' });
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Plugin Hooks
|
|
92
|
+
|
|
93
|
+
**Available Hook Events**:
|
|
94
|
+
```typescript
|
|
95
|
+
type HookEvent =
|
|
96
|
+
| 'PostToolUse' // After tool executes
|
|
97
|
+
| 'PreToolUse' // Before tool executes
|
|
98
|
+
| 'PermissionRequest' // User permission dialog
|
|
99
|
+
| 'Notification' // System notification
|
|
100
|
+
| 'UserPromptSubmit' // After user submits prompt
|
|
101
|
+
| 'Stop' // Conversation stopped
|
|
102
|
+
| 'SubagentStop' // Sub-agent stopped
|
|
103
|
+
| 'PreCompact' // Before context compaction
|
|
104
|
+
| 'SessionStart' // Session started
|
|
105
|
+
| 'SessionEnd'; // Session ended
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Hook Configuration**:
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"hooks": {
|
|
112
|
+
"PostToolUse": [
|
|
113
|
+
{
|
|
114
|
+
"matcher": "TodoWrite",
|
|
115
|
+
"hooks": [{
|
|
116
|
+
"type": "command",
|
|
117
|
+
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/post-task.sh",
|
|
118
|
+
"timeout": 10
|
|
119
|
+
}]
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## MCP (Model Context Protocol)
|
|
127
|
+
|
|
128
|
+
**MCP Server Integration**:
|
|
129
|
+
```typescript
|
|
130
|
+
// Connect to MCP server
|
|
131
|
+
const mcp = await connectMCP({
|
|
132
|
+
name: 'filesystem',
|
|
133
|
+
transport: 'stdio',
|
|
134
|
+
command: 'node',
|
|
135
|
+
args: ['mcp-server-filesystem.js']
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// Use MCP tools
|
|
139
|
+
mcp.call('read_file', { path: '/path/to/file' });
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Best Practices
|
|
143
|
+
|
|
144
|
+
**Tool Usage**:
|
|
145
|
+
- Use absolute paths (not relative)
|
|
146
|
+
- Handle errors gracefully
|
|
147
|
+
- Provide clear descriptions
|
|
148
|
+
- Batch independent operations
|
|
149
|
+
|
|
150
|
+
**Performance**:
|
|
151
|
+
- Minimize tool calls
|
|
152
|
+
- Use Grep before Read (search first)
|
|
153
|
+
- Parallel independent operations
|
|
154
|
+
- Cache results when possible
|
|
155
|
+
|
|
156
|
+
**Security**:
|
|
157
|
+
- Validate file paths
|
|
158
|
+
- Sanitize user input
|
|
159
|
+
- No hardcoded secrets
|
|
160
|
+
- Use environment variables
|
|
161
|
+
|
|
162
|
+
Build powerful Claude Code extensions!
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: marketplace-publishing
|
|
3
|
+
description: Expert Claude Code marketplace publishing covering npm publishing, GitHub releases, semantic versioning, plugin packaging, README documentation, CHANGELOG management, marketplace submission, and plugin distribution. Activates for publish plugin, npm publish, marketplace, release plugin, semantic versioning, semver, plugin distribution, publish to npm, github release.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Marketplace Publishing Expert
|
|
7
|
+
|
|
8
|
+
Expert guidance for publishing Claude Code plugins to npm and marketplace.
|
|
9
|
+
|
|
10
|
+
## Publishing Platforms
|
|
11
|
+
|
|
12
|
+
**1. GitHub** (Recommended):
|
|
13
|
+
```bash
|
|
14
|
+
# Install from GitHub
|
|
15
|
+
claude plugin add github:username/plugin-name
|
|
16
|
+
|
|
17
|
+
# Pros:
|
|
18
|
+
- Free hosting
|
|
19
|
+
- Version control
|
|
20
|
+
- Issue tracking
|
|
21
|
+
- Easy updates
|
|
22
|
+
|
|
23
|
+
# Requirements:
|
|
24
|
+
- Public repository
|
|
25
|
+
- Proper directory structure
|
|
26
|
+
- README with installation
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**2. npm**:
|
|
30
|
+
```bash
|
|
31
|
+
# Install from npm
|
|
32
|
+
claude plugin add plugin-name
|
|
33
|
+
|
|
34
|
+
# Pros:
|
|
35
|
+
- Centralized registry
|
|
36
|
+
- Semantic versioning
|
|
37
|
+
- Easy discovery
|
|
38
|
+
|
|
39
|
+
# Requirements:
|
|
40
|
+
- npm account
|
|
41
|
+
- package.json
|
|
42
|
+
- Unique name (prefix: claude-plugin-)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**3. Marketplace**:
|
|
46
|
+
```bash
|
|
47
|
+
# Official Claude Code marketplace
|
|
48
|
+
# PR to marketplace repository
|
|
49
|
+
|
|
50
|
+
# Requirements:
|
|
51
|
+
- Quality standards
|
|
52
|
+
- Complete documentation
|
|
53
|
+
- No security issues
|
|
54
|
+
- Proper licensing
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Semantic Versioning
|
|
58
|
+
|
|
59
|
+
**Version Format**: `MAJOR.MINOR.PATCH`
|
|
60
|
+
|
|
61
|
+
**Rules**:
|
|
62
|
+
```yaml
|
|
63
|
+
MAJOR (1.0.0 → 2.0.0):
|
|
64
|
+
- Breaking changes
|
|
65
|
+
- Remove commands
|
|
66
|
+
- Change skill keywords
|
|
67
|
+
- Incompatible API changes
|
|
68
|
+
|
|
69
|
+
MINOR (1.0.0 → 1.1.0):
|
|
70
|
+
- New features
|
|
71
|
+
- Add commands
|
|
72
|
+
- Add skills
|
|
73
|
+
- Backward compatible
|
|
74
|
+
|
|
75
|
+
PATCH (1.0.0 → 1.0.1):
|
|
76
|
+
- Bug fixes
|
|
77
|
+
- Documentation updates
|
|
78
|
+
- Performance improvements
|
|
79
|
+
- No API changes
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Examples**:
|
|
83
|
+
```bash
|
|
84
|
+
# Bug fix
|
|
85
|
+
npm version patch # 1.0.0 → 1.0.1
|
|
86
|
+
|
|
87
|
+
# New feature
|
|
88
|
+
npm version minor # 1.0.1 → 1.1.0
|
|
89
|
+
|
|
90
|
+
# Breaking change
|
|
91
|
+
npm version major # 1.1.0 → 2.0.0
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## package.json Setup
|
|
95
|
+
|
|
96
|
+
**Minimum**:
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"name": "claude-plugin-my-plugin",
|
|
100
|
+
"version": "1.0.0",
|
|
101
|
+
"description": "Expert [domain] plugin for Claude Code",
|
|
102
|
+
"keywords": ["claude-code", "plugin", "keyword1"],
|
|
103
|
+
"author": "Your Name",
|
|
104
|
+
"license": "MIT",
|
|
105
|
+
"files": [
|
|
106
|
+
".claude-plugin",
|
|
107
|
+
"commands",
|
|
108
|
+
"skills",
|
|
109
|
+
"agents",
|
|
110
|
+
"README.md",
|
|
111
|
+
"LICENSE"
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Full**:
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"name": "claude-plugin-my-plugin",
|
|
120
|
+
"version": "1.0.0",
|
|
121
|
+
"description": "Expert [domain] plugin with [features]",
|
|
122
|
+
"main": "index.js",
|
|
123
|
+
"scripts": {
|
|
124
|
+
"test": "echo \"No tests yet\"",
|
|
125
|
+
"validate": "bash validate.sh"
|
|
126
|
+
},
|
|
127
|
+
"keywords": [
|
|
128
|
+
"claude-code",
|
|
129
|
+
"plugin",
|
|
130
|
+
"development-tools",
|
|
131
|
+
"keyword1",
|
|
132
|
+
"keyword2"
|
|
133
|
+
],
|
|
134
|
+
"author": "Your Name <you@example.com>",
|
|
135
|
+
"license": "MIT",
|
|
136
|
+
"repository": {
|
|
137
|
+
"type": "git",
|
|
138
|
+
"url": "https://github.com/username/my-plugin"
|
|
139
|
+
},
|
|
140
|
+
"homepage": "https://github.com/username/my-plugin#readme",
|
|
141
|
+
"bugs": {
|
|
142
|
+
"url": "https://github.com/username/my-plugin/issues"
|
|
143
|
+
},
|
|
144
|
+
"files": [
|
|
145
|
+
".claude-plugin/**/*",
|
|
146
|
+
"commands/**/*",
|
|
147
|
+
"skills/**/*",
|
|
148
|
+
"agents/**/*",
|
|
149
|
+
"README.md",
|
|
150
|
+
"LICENSE"
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Publishing Workflow
|
|
156
|
+
|
|
157
|
+
**GitHub Release**:
|
|
158
|
+
```bash
|
|
159
|
+
# 1. Update version
|
|
160
|
+
npm version patch
|
|
161
|
+
|
|
162
|
+
# 2. Commit changes
|
|
163
|
+
git add .
|
|
164
|
+
git commit -m "Release v1.0.1"
|
|
165
|
+
|
|
166
|
+
# 3. Create tag
|
|
167
|
+
git tag v1.0.1
|
|
168
|
+
|
|
169
|
+
# 4. Push
|
|
170
|
+
git push && git push --tags
|
|
171
|
+
|
|
172
|
+
# 5. Create GitHub release
|
|
173
|
+
gh release create v1.0.1 \
|
|
174
|
+
--title "v1.0.1" \
|
|
175
|
+
--notes "Bug fixes and improvements"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**npm Publish**:
|
|
179
|
+
```bash
|
|
180
|
+
# 1. Login
|
|
181
|
+
npm login
|
|
182
|
+
|
|
183
|
+
# 2. Validate package
|
|
184
|
+
npm pack --dry-run
|
|
185
|
+
|
|
186
|
+
# 3. Publish
|
|
187
|
+
npm publish
|
|
188
|
+
|
|
189
|
+
# 4. Verify
|
|
190
|
+
npm view claude-plugin-my-plugin
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Documentation Requirements
|
|
194
|
+
|
|
195
|
+
**README.md**:
|
|
196
|
+
```markdown
|
|
197
|
+
# Plugin Name
|
|
198
|
+
|
|
199
|
+
> One-line tagline
|
|
200
|
+
|
|
201
|
+
Brief description.
|
|
202
|
+
|
|
203
|
+
## Features
|
|
204
|
+
|
|
205
|
+
- Feature 1
|
|
206
|
+
- Feature 2
|
|
207
|
+
|
|
208
|
+
## Installation
|
|
209
|
+
|
|
210
|
+
\```bash
|
|
211
|
+
claude plugin add github:user/plugin
|
|
212
|
+
\```
|
|
213
|
+
|
|
214
|
+
## Commands
|
|
215
|
+
|
|
216
|
+
### /plugin:command
|
|
217
|
+
|
|
218
|
+
Description.
|
|
219
|
+
|
|
220
|
+
## Examples
|
|
221
|
+
|
|
222
|
+
[Working examples]
|
|
223
|
+
|
|
224
|
+
## License
|
|
225
|
+
|
|
226
|
+
MIT
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**CHANGELOG.md**:
|
|
230
|
+
```markdown
|
|
231
|
+
# Changelog
|
|
232
|
+
|
|
233
|
+
## [1.0.1] - 2025-01-15
|
|
234
|
+
|
|
235
|
+
### Fixed
|
|
236
|
+
- Bug fix 1
|
|
237
|
+
- Bug fix 2
|
|
238
|
+
|
|
239
|
+
## [1.0.0] - 2025-01-01
|
|
240
|
+
|
|
241
|
+
### Added
|
|
242
|
+
- Initial release
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Quality Checklist
|
|
246
|
+
|
|
247
|
+
**Pre-publish**:
|
|
248
|
+
- ✅ All commands working
|
|
249
|
+
- ✅ Skills activate correctly
|
|
250
|
+
- ✅ No hardcoded secrets
|
|
251
|
+
- ✅ README with examples
|
|
252
|
+
- ✅ LICENSE file
|
|
253
|
+
- ✅ Semantic versioning
|
|
254
|
+
- ✅ CHANGELOG updated
|
|
255
|
+
- ✅ Git tag created
|
|
256
|
+
|
|
257
|
+
**Post-publish**:
|
|
258
|
+
- ✅ Test installation
|
|
259
|
+
- ✅ Verify on npm (if published)
|
|
260
|
+
- ✅ Check GitHub release
|
|
261
|
+
- ✅ Update marketplace (if applicable)
|
|
262
|
+
|
|
263
|
+
Publish professional Claude Code plugins!
|