Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 13 additions & 16 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,30 +21,28 @@ jobs:
- name: Determine version
id: version
run: |
MANIFEST_VERSION=$(jq -r '.version' manifest.json)
PLUGIN_VERSION=$(jq -r '.version' .claude-plugin/plugin.json)
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "0.0.0")

echo "manifest=$MANIFEST_VERSION plugin=$PLUGIN_VERSION latest_tag=$LATEST_TAG"
echo "plugin=$PLUGIN_VERSION latest_tag=$LATEST_TAG"

# If manifest version is ahead of the latest tag, use it (manual bump)
if [ "$MANIFEST_VERSION" != "$LATEST_TAG" ] && [ "$MANIFEST_VERSION" != "$PLUGIN_VERSION" ] || [ "$MANIFEST_VERSION" != "$LATEST_TAG" ]; then
# Check if manifest version is actually newer
MANIFEST_MAJOR=$(echo "$MANIFEST_VERSION" | cut -d. -f1)
MANIFEST_MINOR=$(echo "$MANIFEST_VERSION" | cut -d. -f2)
MANIFEST_PATCH=$(echo "$MANIFEST_VERSION" | cut -d. -f3)
# If plugin.json version is ahead of the latest tag, use it (manual bump)
if [ "$PLUGIN_VERSION" != "$LATEST_TAG" ]; then
P_MAJOR=$(echo "$PLUGIN_VERSION" | cut -d. -f1)
P_MINOR=$(echo "$PLUGIN_VERSION" | cut -d. -f2)
P_PATCH=$(echo "$PLUGIN_VERSION" | cut -d. -f3)
TAG_MAJOR=$(echo "$LATEST_TAG" | cut -d. -f1)
TAG_MINOR=$(echo "$LATEST_TAG" | cut -d. -f2)
TAG_PATCH=$(echo "$LATEST_TAG" | cut -d. -f3)

if [ "$MANIFEST_MAJOR" -gt "$TAG_MAJOR" ] 2>/dev/null || \
([ "$MANIFEST_MAJOR" -eq "$TAG_MAJOR" ] && [ "$MANIFEST_MINOR" -gt "$TAG_MINOR" ]) 2>/dev/null || \
([ "$MANIFEST_MAJOR" -eq "$TAG_MAJOR" ] && [ "$MANIFEST_MINOR" -eq "$TAG_MINOR" ] && [ "$MANIFEST_PATCH" -gt "$TAG_PATCH" ]) 2>/dev/null; then
echo "Manual version bump detected: $LATEST_TAG → $MANIFEST_VERSION"
echo "version=$MANIFEST_VERSION" >> "$GITHUB_OUTPUT"
if [ "$P_MAJOR" -gt "$TAG_MAJOR" ] 2>/dev/null || \
([ "$P_MAJOR" -eq "$TAG_MAJOR" ] && [ "$P_MINOR" -gt "$TAG_MINOR" ]) 2>/dev/null || \
([ "$P_MAJOR" -eq "$TAG_MAJOR" ] && [ "$P_MINOR" -eq "$TAG_MINOR" ] && [ "$P_PATCH" -gt "$TAG_PATCH" ]) 2>/dev/null; then
echo "Manual version bump detected: $LATEST_TAG → $PLUGIN_VERSION"
echo "version=$PLUGIN_VERSION" >> "$GITHUB_OUTPUT"
echo "bumped=manual" >> "$GITHUB_OUTPUT"
else
echo "Manifest version $MANIFEST_VERSION is not ahead of tag $LATEST_TAG — auto-bumping patch"
echo "plugin.json version $PLUGIN_VERSION is not ahead of tag $LATEST_TAG — auto-bumping patch"
echo "bumped=auto" >> "$GITHUB_OUTPUT"
fi
else
Expand All @@ -67,14 +65,13 @@ jobs:
run: |
VERSION="${{ steps.version.outputs.version }}"
jq --arg v "$VERSION" '.version = $v' .claude-plugin/plugin.json > tmp.json && mv tmp.json .claude-plugin/plugin.json
jq --arg v "$VERSION" '.version = $v' manifest.json > tmp.json && mv tmp.json manifest.json

- name: Commit version bump
run: |
VERSION="${{ steps.version.outputs.version }}"
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add .claude-plugin/plugin.json manifest.json
git add .claude-plugin/plugin.json
# Only commit if there are changes
if git diff --cached --quiet; then
echo "Version files already at $VERSION — no commit needed"
Expand Down
22 changes: 11 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,39 +4,39 @@

Slash commands appear in tab-completion and run step-by-step workflows.

1. Create `skills/my-command.md` with YAML frontmatter:
1. Create `commands/my-command.md` with YAML frontmatter:
```markdown
---
name: devkit:my-command
description: What this command does.
---
# Command Title
Step-by-step workflow with numbered steps.
```
2. Add `"skills/my-command.md"` to the `"commands"` array in `manifest.json`
3. Include Budget & Early Exit section if the command loops
4. Include `[PARALLEL]` markers if steps run concurrently
2. Include Budget & Early Exit section if the command loops
3. Include `[PARALLEL]` markers if steps run concurrently

The command name is derived from the filename: `commands/my-command.md` becomes `/devkit:my-command`.

## Adding a Context-Activated Skill

Skills activate automatically based on natural language — no slash command needed.

1. Create `skills/my-skill.md` with YAML frontmatter:
1. Create `skills/my-skill/SKILL.md` with YAML frontmatter:
```markdown
---
name: devkit:my-skill
name: my-skill
description: Triggers on "natural language pattern".
---
# Skill Title
Guidelines or workflow (keep under 100 lines).
```
2. Add `"skills/my-skill.md"` to the `"skills"` array in `manifest.json`

The skill will be auto-discovered as `devkit:my-skill`.

## Adding an Agent

1. Create `agents/my-agent.md` with YAML frontmatter specifying model, tools, isolation, and maxTurns
2. Add `"agents/my-agent.md"` to `manifest.json`
3. Scope tools to only what the agent needs
1. Create `agents/my-agent.md` with YAML frontmatter specifying name, description, model, effort, maxTurns, and disallowedTools
2. Scope tools to only what the agent needs

## Adding a Workflow

Expand Down
38 changes: 19 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -285,11 +285,11 @@ None yet — `presets/` is reserved for future use.

```
devkit/
├── manifest.json # Plugin manifest
├── .claude-plugin/
│ └── plugin.json # Plugin metadata (name, version, author)
├── ROADMAP.md # Implemented features and future plans
├── PREFERENCES.md # Agent behavior guidelines
├── skills/ # All skill files (commands + skills)
│ │ # — 20 slash commands (tab-completable) —
├── commands/ # 20 slash commands (tab-completable)
│ ├── tri-*.md # Multi-agent dispatch (5)
│ ├── self-*.md # Self-improvement loops (5)
│ ├── pr-ready.md # PR preparation pipeline
Expand All @@ -301,22 +301,22 @@ devkit/
│ ├── workflow.md # YAML workflow runner
│ ├── audit.md # Project health audit
│ ├── repo-map.md # AST-based symbol index
── status.md # Health check
│ │ # — 14 context-activated skills
│ ├── executing.md # Principle: methodical execution
│ ├── clean-code.md # Principle: readability
│ ├── dry.md # Principle: don't repeat yourself
│ ├── yagni.md # Principle: no speculative features
│ ├── dont-reinvent.md # Principle: use existing solutions
│ ├── stuck.md # Principle: loop recovery
│ ├── creating-workflows.md # Tool: YAML workflow authoring
│ ├── gcli.md # Tool: Google Workspace CLI
│ ├── changelog.md # Auto: "generate a changelog"
│ ├── doc-gen.md # Auto: "document this module"
│ ├── test-gen.md # Auto: "write tests for X"
│ ├── onboard.md # Auto: "explain this codebase"
│ ├── research.md # Auto: "research X"
│ └── scrape.md # Auto: "scrape this URL"
── status.md # Health check
├── skills/ # 14 context-activated skills
│ ├── executing/SKILL.md # Principle: methodical execution
│ ├── clean-code/SKILL.md # Principle: readability
│ ├── dry/SKILL.md # Principle: don't repeat yourself
│ ├── yagni/SKILL.md # Principle: no speculative features
│ ├── dont-reinvent/SKILL.md # Principle: use existing solutions
│ ├── stuck/SKILL.md # Principle: loop recovery
│ ├── creating-workflows/SKILL.md # Tool: YAML workflow authoring
│ ├── gcli/SKILL.md # Tool: Google Workspace CLI
│ ├── changelog/SKILL.md # Auto: "generate a changelog"
│ ├── doc-gen/SKILL.md # Auto: "document this module"
│ ├── test-gen/SKILL.md # Auto: "write tests for X"
│ ├── onboard/SKILL.md # Auto: "explain this codebase"
│ ├── research/SKILL.md # Auto: "research X"
│ └── scrape/SKILL.md # Auto: "scrape this URL"
├── agents/ # 6 agents
│ ├── reviewer.md # Opus, worktree isolation
│ ├── researcher.md # Sonnet, worktree isolation
Expand Down
1 change: 0 additions & 1 deletion skills/audit.md → commands/audit.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:audit
description: Unified project health audit — dependencies, vulnerabilities, outdated packages, licenses, lint, and security in one report.
---

Expand Down
1 change: 0 additions & 1 deletion skills/bugfix.md → commands/bugfix.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:bugfix
description: Full lifecycle bug fix — reproduce, diagnose, fix, regression test, verify.
---

Expand Down
1 change: 0 additions & 1 deletion skills/decompose.md → commands/decompose.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:decompose
description: Decompose a high-level goal into a task DAG — break down, assign to agents, resolve dependencies, execute in order.
---

Expand Down
1 change: 0 additions & 1 deletion skills/feature.md → commands/feature.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:feature
description: Full lifecycle feature development — brainstorm, plan, implement, test, lint, review.
---

Expand Down
1 change: 0 additions & 1 deletion skills/pr-monitor.md → commands/pr-monitor.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:pr-monitor
description: Post-PR review monitor — watches CI, fetches reviewer comments, iteratively resolves them, and pushes fixes.
---

Expand Down
1 change: 0 additions & 1 deletion skills/pr-ready.md → commands/pr-ready.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:pr-ready
description: Full PR preparation pipeline — necessity check, DRY review, lint, test, security, changelog, and create PR.
---

Expand Down
1 change: 0 additions & 1 deletion skills/refactor.md → commands/refactor.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:refactor
description: Full lifecycle refactor — analyze code smells, plan transformations, restructure, verify nothing broke.
---

Expand Down
1 change: 0 additions & 1 deletion skills/repo-map.md → commands/repo-map.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:repo-map
description: Build an AST-based symbol index of the repository — exports, functions, classes, imports — cached for fast agent navigation.
---

Expand Down
1 change: 0 additions & 1 deletion skills/self-improve.md → commands/self-improve.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: self:improve
description: Self-recursive improvement loop — automated refactoring with test gate. Uses native improver agent in worktree isolation. Propose → measure → keep/discard → repeat.
---

Expand Down
1 change: 0 additions & 1 deletion skills/self-lint.md → commands/self-lint.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: self:lint
description: Self-improvement loop targeting lint and type errors. Iteratively fixes issues until zero remain or iterations exhausted.
---

Expand Down
1 change: 0 additions & 1 deletion skills/self-migrate.md → commands/self-migrate.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: self:migrate
description: Self-improvement loop for incremental codebase migrations. Iteratively migrates code with tests as the safety gate.
---

Expand Down
1 change: 0 additions & 1 deletion skills/self-perf.md → commands/self-perf.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: self:perf
description: Hypothesis-driven performance investigation — analyze, hypothesize, test one theory at a time, measure against baseline.
---

Expand Down
1 change: 0 additions & 1 deletion skills/self-test.md → commands/self-test.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: self:test
description: Self-improvement loop targeting test coverage. Iteratively generates and improves tests until a coverage target is met or iterations exhausted.
---

Expand Down
1 change: 0 additions & 1 deletion skills/status.md → commands/status.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:status
description: Check devkit health — which external CLIs are installed, which agents are available, and which commands are ready to use.
---

Expand Down
1 change: 0 additions & 1 deletion skills/tri-debug.md → commands/tri-debug.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: tri:debug
description: Multi-agent debugging — send a bug report to available agents (Claude + Codex + Gemini) via plugin or CLI, get independent root-cause hypotheses, and a consensus fix.
---

Expand Down
1 change: 0 additions & 1 deletion skills/tri-dispatch.md → commands/tri-dispatch.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: tri:dispatch
description: Dispatch a task to all three agents (Claude, Codex, Gemini) in parallel and compare results. Claude uses native background agent, others via plugin or CLI.
---

Expand Down
1 change: 0 additions & 1 deletion skills/tri-review.md → commands/tri-review.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: tri:review
description: Triple-agent PR/code review. Claude runs as native background agent (token-efficient), Codex and Gemini via plugin or CLI. Consolidates findings.
---

Expand Down
1 change: 0 additions & 1 deletion skills/tri-security.md → commands/tri-security.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: tri:security
description: Multi-agent security audit — independent security reviews from available agents, consolidated with severity-ranked findings.
---

Expand Down
1 change: 0 additions & 1 deletion skills/tri-test-gen.md → commands/tri-test-gen.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: tri:test-gen
description: Multi-agent test generation — each available agent generates tests independently, then merge for maximum coverage.
---

Expand Down
2 changes: 0 additions & 2 deletions skills/workflow.md → commands/workflow.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
name: devkit:workflow
description: Run a user-defined YAML workflow. Multi-step pipelines with loops, approval gates, and branching.
---

Expand All @@ -19,7 +18,6 @@ Execute a YAML-defined workflow from the `workflows/` directory.
Read `workflows/{name}.yml` and parse:

```yaml
name: workflow-name
description: What this workflow does

steps:
Expand Down
51 changes: 0 additions & 51 deletions manifest.json

This file was deleted.

2 changes: 1 addition & 1 deletion skills/changelog.md → skills/changelog/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:changelog
name: changelog
description: Generate a structured changelog from git history — use when asked to create a changelog, release notes, or summarize what changed between versions/tags/branches.
---

Expand Down
2 changes: 1 addition & 1 deletion skills/clean-code.md → skills/clean-code/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:clean-code
name: clean-code
description: Clean code principles — meaningful names, small functions, single responsibility, stepdown rule, flat nesting.
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:creating-workflows
name: creating-workflows
description: How to create devkit workflow YAML files — schema reference, step types, variable interpolation, and examples.
---

Expand Down
2 changes: 1 addition & 1 deletion skills/doc-gen.md → skills/doc-gen/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:doc-gen
name: doc-gen
description: Generate documentation for code — use when asked to document a module, generate API docs, create a README for code, or write reference documentation.
---

Expand Down
2 changes: 1 addition & 1 deletion skills/dont-reinvent.md → skills/dont-reinvent/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:dont-reinvent
name: dont-reinvent
description: Don't reinvent the wheel — use existing libraries, tools, and stdlib before building custom solutions. Every custom solution is maintenance burden.
---

Expand Down
2 changes: 1 addition & 1 deletion skills/dry.md → skills/dry/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:dry
name: dry
description: Don't Repeat Yourself — Rule of Three, when duplication is fine, extracting the right abstraction.
---

Expand Down
2 changes: 1 addition & 1 deletion skills/executing.md → skills/executing/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:executing
name: executing
description: Execute implementation plans — work through steps methodically, verify each one, keep changes small and reviewable.
---

Expand Down
2 changes: 1 addition & 1 deletion skills/gcli.md → skills/gcli/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: devkit:gcli
name: gcli
description: Google Workspace CLI (Gmail, Calendar, Drive) via gcli — use --for-ai flag for token-efficient structured output.
---

Expand Down
Loading
Loading