with one click
plugin-dev-workflow
// Guide plugin development workflow for this repo. Use when editing shipped plugin files under plugins/ruby-grape-rails/, release/docs metadata, or contributor tooling under .claude/.
// Guide plugin development workflow for this repo. Use when editing shipped plugin files under plugins/ruby-grape-rails/, release/docs metadata, or contributor tooling under .claude/.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | plugin-dev-workflow |
| description | Guide plugin development workflow for this repo. Use when editing shipped plugin files under plugins/ruby-grape-rails/, release/docs metadata, or contributor tooling under .claude/. |
| effort | medium |
Imperative-only. Tables for command/option lists.
Run deterministic gates before drawing conclusions from session
analytics. See .claude/rules/development.md ยง "Deterministic-First
Ordering".
Two surfaces, kept separate in implementation + validation:
| Surface | Path |
|---|---|
| shipped plugin | plugins/ruby-grape-rails/ |
| contributor-only tooling | .claude/ |
Supported environments: macOS, Linux, WSL. Native Windows: NOT supported.
Session analytics under .claude/skills/session-* and
.claude/skills/skill-monitor/: exploratory only, NOT release-grade.
Before editing, identify the surface:
| Layer | Files |
|---|---|
| shipped plugin | skills, agents, hooks, bin/, plugin settings.json, plugin metadata, README, user-facing docs |
| contributor tooling | .claude/skills/, .claude/agents/, local planning/audit notes |
Do NOT treat contributor-only changes as shipped plugin features.
Run checks matching the files touched:
| Files touched | Run |
|---|---|
| Markdown docs / skills / agents | npx markdownlint <touched-files> |
| Shell hooks | bash -n plugins/ruby-grape-rails/hooks/scripts/<file>.sh, shellcheck -x plugins/ruby-grape-rails/hooks/scripts/<file>.sh |
bin/ executables | bash -n plugins/ruby-grape-rails/bin/<name>, shellcheck plugins/ruby-grape-rails/bin/<name>, mock-test via crafted stdin when the executable reads hook-style JSON |
| Ruby scripts | ruby -c <file> |
| Shipped plugin shape | claude plugin validate plugins/ruby-grape-rails |
| Contributor eval tooling | make eval, make eval-all, make eval-ci-deterministic, make eval-output, make security-injection, make eval-tests, make eval-overlap, make eval-hard-corpus |
Multiple shipped surfaces touched โ run plugin validator + file-type-specific checks.
Trust order before contributor-analytics conclusions:
claude plugin validate plugins/ruby-grape-railsmake eval or make eval-allmake eval-output (deterministic research/review artifact fixtures)/docs-check when Claude docs / plugin schema assumptions may have changedWhen lab/eval/ changes, also run:
python3 3.14+ (eval tooling floor)python3 -m compileall lab/evalbash scripts/run-eval-tests.shpython3 -m lab.eval.artifact_scorer --allpython3 -m pytest lab/eval/tests -v when pytest installedFor research/review artifact changes, consult
${CLAUDE_SKILL_DIR}/references/output-verification-checklist.md.
User-visible change steps:
CHANGELOG.md.package.json.claude-plugin/marketplace.jsonplugins/ruby-grape-rails/.claude-plugin/plugin.jsonREADME.md / CLAUDE.md when counts, commands, or behavior changed.Routing:
| State | Section |
|---|---|
| current version already released | new notes go under Unreleased |
| preparing next release | move work into target version section |
Contributor workflow direction or local planning/audit notes change:
rm -f only for mktemp outputs or exact fixed plugin-owned pathsrm -rf only for validated mktemp -d outputs; prefer rmdir for expected-empty lock dirs${var:?}