{"id":47784080,"url":"https://github.com/davidarce/devrune-starter-catalog","last_synced_at":"2026-05-10T19:57:53.814Z","repository":{"id":347663637,"uuid":"1191997033","full_name":"davidarce/devrune-starter-catalog","owner":"davidarce","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-15T18:40:59.000Z","size":274,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T20:31:00.019Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davidarce.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-25T19:42:23.000Z","updated_at":"2026-04-10T08:42:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/davidarce/devrune-starter-catalog","commit_stats":null,"previous_names":["davidarce/devrune-starter-catalog"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/davidarce/devrune-starter-catalog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidarce%2Fdevrune-starter-catalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidarce%2Fdevrune-starter-catalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidarce%2Fdevrune-starter-catalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidarce%2Fdevrune-starter-catalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidarce","download_url":"https://codeload.github.com/davidarce/devrune-starter-catalog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidarce%2Fdevrune-starter-catalog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32392317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T14:34:11.604Z","status":"ssl_error","status_checked_at":"2026-04-28T14:32:37.009Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-03T14:06:49.338Z","updated_at":"2026-05-10T19:57:53.808Z","avatar_url":"https://github.com/davidarce.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DevRune Starter Catalog\n\n\u003cp\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/davidarce/devrune-starter-catalog?style=flat\u0026color=gray\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/DevRune-native%20catalog-8B5CF6?style=flat\" alt=\"DevRune native catalog\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/SDD-first%20citizen-00D7FF?style=flat\" alt=\"SDD first citizen\"\u003e\n\u003c/p\u003e\n\n\u003e The native content source for [**DevRune**](https://github.com/davidarce/DevRune) — and the home of the **Spec-Driven Development (SDD)** workflow.\n\nThis catalog is a curated collection of **skills**, **rules**, **MCP server definitions**, **workflows**, and **developer tools** that DevRune resolves, locks, and materializes into your AI agent workspaces. You point DevRune at it; your agents get the content.\n\n```yaml\n# devrune.yaml\npackages:\n  - source: github:davidarce/devrune-starter-catalog@main\nworkflows:\n  - source: github:davidarce/devrune-starter-catalog@main//workflows/sdd\n```\n\n---\n\n## Table of Contents\n\n- [What's inside](#whats-inside)\n- [Spec-Driven Development — the flagship workflow](#-spec-driven-development--the-flagship-workflow)\n- [Skills](#-skills)\n- [Rules](#-rules)\n- [MCP Servers](#-mcp-servers)\n- [Developer Tools](#-developer-tools)\n- [Using this catalog with DevRune](#-using-this-catalog-with-devrune)\n- [Catalog contract (build your own)](#-catalog-contract-build-your-own)\n- [Contributing](#-contributing)\n- [Releases](#-releases)\n- [License](#-license)\n\n---\n\n## What's inside\n\n```\ndevrune-starter-catalog/\n├── workflows/\n│   └── sdd/             ← the flagship SDD workflow (4 phases, orchestrator, hooks)\n├── skills/              ← 11 reusable agent skills (7 advisors + git ops + review/explore)\n├── rules/               ← 11 coding-standard rule packs (architecture, API, tech, testing)\n├── mcps/                ← 6 MCP server definitions\n└── tools/               ← 2 developer CLI tools (Crit, Engram) auto-installed by DevRune\n```\n\nEverything here is **just data** (Markdown + YAML). DevRune owns the how; this catalog owns the what.\n\n---\n\n## 🧠 Spec-Driven Development — the flagship workflow\n\nSDD is the reason this catalog exists. It's a disciplined, 4-phase workflow for building software with AI agents that keeps you in control and agents on the rails.\n\n### The 4 phases\n\n```\n┌─────────────┐     ┌──────────┐     ┌───────────────┐     ┌─────────────┐\n│ ① Explore   │ ──▶ │ ② Plan   │ ──▶ │ ③ Implement   │ ──▶ │ ④ Review    │\n│             │     │          │     │   (waves)     │     │             │\n│ exploration │     │ plan.md  │     │ code changes  │     │ review.md   │\n│    .md      │     │          │     │ [X] markers   │     │             │\n└─────────────┘     └──────────┘     └───────────────┘     └─────────────┘\n   Sonnet             Opus             Sonnet                 Opus\n```\n\n| Phase            | Skill              | Output                               | Notes                                                    |\n|------------------|--------------------|--------------------------------------|----------------------------------------------------------|\n| **① Explore**    | `sdd-explore`      | `.sdd/{change}/exploration.md`       | Curates relevant files, surfaces ambiguities.            |\n| **② Plan**       | `sdd-plan`         | `.sdd/{change}/plan.md`              | Deep interview → task plan with batch table \u0026 quality gates. |\n| **③ Implement**  | `sdd-implement`    | Code + `[X]` markers in `plan.md`    | Wave-based execution, fail-fast, parallel or sequential. |\n| **④ Review**     | `sdd-review`       | `.sdd/{change}/review.md`            | Diffs against plan, flags regressions, commit-or-fix.    |\n\nOrchestration is **delegate-only** — the `sdd-orchestrator` never reads or writes code; it launches each phase as a sub-agent via `Task()` and consumes the envelope the sub-agent returns.\n\n### The Advisor Strategy (guidance loop)\n\nDuring Plan, the planner can detect it needs specialist input and return a `guidance_requested` envelope. The orchestrator launches the requested advisors **in parallel** (with Opus for depth), collects their recommendations, and re-enters the planner with the guidance integrated.\n\n```\nsdd-plan (Sonnet) ─┐\n                   ├─ detects gap → guidance_requested\n                   ▼\nOrchestrator ──── launches advisors (Opus) in parallel\n                   │     architect · api-first · unit-test · component · a11y ...\n                   ▼\nOrchestrator ──── re-enters sdd-plan with advisor recommendations\n                   │\n                   ▼\nsdd-plan ──── status: ok → crit review → implement\n```\n\nAdvisors return **Strengths / Issues / Recommendations** and persist full guidance to engram when available. **Advisors never execute** — they only advise.\n\n### Compaction recovery — SDD survives context resets\n\nLong sessions get compacted. SDD defends against that with per-agent hooks and a TypeScript plugin, plus file-first state:\n\n| Agent             | Tier | Mechanism                                                          |\n|-------------------|:----:|--------------------------------------------------------------------|\n| Claude Code       | 1a   | `PreCompact` + `SessionStart(compact)` hooks (JSON, deep-merged)   |\n| Factory           | 1b   | `PreCompact` hook                                                  |\n| OpenCode          | 2    | TypeScript plugin auto-loaded from `.opencode/plugins/`             |\n| Codex / Copilot   | 3    | Catalog-only recovery via `REGISTRY.md`                            |\n\nOn compaction, the hook preserves `.sdd/{change}/state.yaml`. On restart, a CRITICAL recovery context is re-injected with the current phase and the `NEXT:` directive — the orchestrator resumes exactly where it left off.\n\n### Inside `workflows/sdd/`\n\n```\nworkflows/sdd/\n├── workflow.yaml              ← declares roles, skills, entrypoint, hooks, permissions\n├── ORCHESTRATOR.md            ← delegate-only coordinator (Claude/Codex/Factory)\n├── ORCHESTRATOR.copilot.md    ← @agent-name invocation variant\n├── ORCHESTRATOR.opencode.md   ← OpenCode native variant\n├── REGISTRY.md                ← evaluation gate + delegation rules (HIGHEST PRIORITY)\n│\n├── sdd-explore/               ← phase skill + exploration_template.md\n├── sdd-plan/                  ← phase skill + plan_template.md + interview_guide.md\n├── sdd-implement/             ← phase skill (wave execution)\n├── sdd-review/                ← phase skill (standalone or SDD-context)\n├── sdd-orchestrator/          ← wrapper skill that loads ORCHESTRATOR.md\n│\n├── _shared/\n│   ├── envelope-contract.md   ← the envelope every phase returns\n│   ├── launch-templates.md    ← copy-paste Task() templates per phase\n│   ├── advisor-templates.md   ← advisor invocation patterns (parallel · sequential · @agent)\n│   ├── persistence-contract.md ← .sdd/ (primary) + engram (secondary), state.yaml schema\n│   └── recovery.md            ← compaction recovery + fail-fast error handling\n│\n├── hooks/\n│   ├── sdd-hooks-claude.json  ← PreCompact + SessionStart(compact)\n│   └── sdd-hooks-factory.json ← PreCompact\n│\n└── plugins/\n    └── sdd-compaction.ts      ← OpenCode TypeScript plugin\n```\n\n\u003e 💡 **Trying to understand SDD end-to-end?** Read, in order: [`REGISTRY.md`](workflows/sdd/REGISTRY.md) → [`ORCHESTRATOR.md`](workflows/sdd/ORCHESTRATOR.md) → [`_shared/envelope-contract.md`](workflows/sdd/_shared/envelope-contract.md) → [`_shared/launch-templates.md`](workflows/sdd/_shared/launch-templates.md). That's roughly 800 lines and it gives you the whole model.\n\n---\n\n## 🧰 Skills\n\nReusable agent skills. Advisors participate in the SDD guidance loop; git/review skills are invoked directly by the user or by SDD's decision rules.\n\n### Advisors\n\nThese feed the SDD guidance loop. The planner flags which ones are relevant; the orchestrator launches them in parallel.\n\nEach advisor declares its applicable project domains via the `scope` field in its `SKILL.md` frontmatter. The vocabulary is `frontend`, `backend`, `testing`, `architecture`, `api`, `security`, `performance`, `accessibility`. An empty `scope` means universal (applies to every project). Unknown values are silently dropped (forward-compatible).\n\n| Skill                       | Scope                       | Domain                                                                              |\n|-----------------------------|-----------------------------|-------------------------------------------------------------------------------------|\n| `architect-advisor`         | `[architecture]`            | Clean architecture, hexagonal, DDD, ports and adapters.                             |\n| `api-first-advisor`         | `[backend, api]`            | OpenAPI, REST conventions, error models, versioning.                                |\n| `component-advisor`         | `[frontend]`                | React component design — composition, hooks, state management, performance.        |\n| `unit-test-advisor`         | `[testing]`                 | Domain unit tests — Given-When-Then, Mother pattern, mocking strategies.            |\n| `integration-test-advisor`  | `[backend, testing]`        | Adapter tests — WireMock, external-service simulation, TestContainers.              |\n| `frontend-test-advisor`     | `[frontend, testing]`       | React Testing Library, Vitest/Jest, Cypress/Playwright e2e.                         |\n| `web-accessibility-advisor` | `[frontend, accessibility]` | WCAG 2.1 AA, ARIA, keyboard navigation, screen readers.                             |\n\n### Workflow-direct skills\n\n| Skill                  | Purpose                                                                                 |\n|------------------------|-----------------------------------------------------------------------------------------|\n| `git-commit`           | Conventional Commits with JIRA ticket integration.                                      |\n| `git-pull-request`     | Pull request creation with template selection and platform auto-detection (GitHub/GitLab). |\n| `review-pr`            | Fetch PR/MR, analyze with project rules via `sdd-review`, post inline comments.         |\n| `arch-flow-explorer`   | Generate interactive HTML visualizations of backend architecture flows.                 |\n\n---\n\n## 📐 Rules\n\nCoding-standard rule packs scoped by category. Advisors reference the rules they own; DevRune can install them per-agent as individual files, a concatenated rules doc, or both (`install.rulesMode`).\n\n| Category       | Rule                          | Scope                                                                  |\n|----------------|-------------------------------|------------------------------------------------------------------------|\n| **API**        | `api-standards`               | REST naming, validation, error models, versioning, pagination.        |\n| **Architecture**| `4-rules-of-simple-design`    | Kent Beck's 4 Rules: passes tests · reveals intention · no duplication · fewest elements. |\n|                | `clean-architecture`          | Hexagonal architecture, DDD, layers, dependency inversion.             |\n| **Tech**       | `java-spring`                 | Spring Boot conventions — module structure, DI, testing, API patterns. |\n|                | `react`                       | React and TypeScript coding standards.                                 |\n|                | `microfrontends`              | Host/shell mediator pattern, EventBus, zero breaking changes.         |\n|                | `accessibility-standards`     | WCAG 2.2 AA, ARIA patterns, keyboard navigation, semantic HTML.       |\n|                | `frontend-testing`            | React Testing Library, Vitest/Jest, Cypress/Playwright e2e.           |\n| **Testing**    | `adapter-it-patterns`         | Adapter integration tests with WireMock.                              |\n|                | `java-unit-tests`             | Inditex Java unit test standards.                                     |\n|                | `mother-pattern`              | Mother builder pattern, test data construction, BDDMockito.           |\n\n---\n\n## 🔌 MCP Servers\n\nModel Context Protocol servers your agents can call. Each file in `mcps/` declares the command, args, permissions, and agent instructions.\n\n| MCP           | What it gives your agent                                              |\n|---------------|-----------------------------------------------------------------------|\n| `atlassian`   | Jira \u0026 Confluence (read issues, search, post comments; OAuth).        |\n| `context7`    | Up-to-date library docs (React, Spring, Django, …) fetched at runtime.|\n| `engram`      | Persistent memory across sessions — `mem_save`, `mem_search`, `mem_context`. |\n| `exa`         | Web and code search.                                                  |\n| `playwright`  | Browser automation for testing and scraping.                          |\n| `ref`         | Technical documentation search.                                       |\n\n\u003e 🔐 DevRune writes the MCP config into each agent's native format (`.mcp.json`, `opencode.json`, `config.toml`, `mcp.json`). You only declare it once, here.\n\n---\n\n## 🧪 Developer Tools\n\nOptional CLI companions. During `devrune init`, DevRune detects which tools are relevant from your selected MCPs/workflows, checks if they're already on `PATH`, and offers to install the rest via Homebrew.\n\n| Tool      | What it does                                    | Installed when                          |\n|-----------|-------------------------------------------------|------------------------------------------|\n| `crit`    | Plan review tool for SDD (inline feedback in the browser). | Workflow `sdd` is selected.              |\n| `engram`  | Persistent-memory daemon for AI agents.        | MCP `engram` or workflow `sdd` selected. |\n\n---\n\n## 🚀 Using this catalog with DevRune\n\n### Minimal `devrune.yaml`\n\n```yaml\nschemaVersion: devrune/v1\n\nagents: [claude, opencode]\n\npackages:\n  - source: github:davidarce/devrune-starter-catalog@main\n    select:\n      skills: [git-commit, architect-advisor, unit-test-advisor]\n      rules:  [architecture/clean-architecture, testing/mother-pattern]\n\nmcps:\n  - source: github:davidarce/devrune-starter-catalog@main//mcps/engram.yaml\n\nworkflows:\n  - source: github:davidarce/devrune-starter-catalog@main//workflows/sdd\n```\n\n```bash\ndevrune sync\n```\n\n### Or let the TUI pick for you\n\n```bash\ndevrune init\n```\n\nDevRune detects your tech stack and pre-selects the advisors and rules that fit (e.g. a React repo pre-selects `component-advisor`, `frontend-test-advisor`, `web-accessibility-advisor` and the `react` / `frontend-testing` / `accessibility-standards` rules).\n\n---\n\n## 📋 Catalog contract (build your own)\n\nDevRune works with **any catalog** that follows this layout:\n\n```\nmy-catalog/\n├── skills/{skill-name}/SKILL.md          # frontmatter + instructions\n├── rules/{category}/{name}-rules.md      # plain markdown rule pack\n├── mcps/{name}.yaml                      # MCP server definition\n├── workflows/{name}/workflow.yaml        # workflow manifest (see below)\n└── tools/{name}.yaml                     # optional dev-tool recipe\n```\n\n### SKILL.md (frontmatter + body)\n\n```markdown\n---\nname: git:commit\ndescription: Automated git commits with Conventional Commits + JIRA integration\nallowed-tools: [Bash, Read, Grep]\n---\n\n# Skill body (Markdown) — instructions for the agent.\n```\n\n### workflow.yaml (for multi-phase workflows)\n\n```yaml\napiVersion: devrune/workflow/v1\nmetadata:\n  name: my-workflow\n  displayName: \"My Workflow\"\n  version: \"1.0.0\"\n  workingDir: my-orchestrator\ncomponents:\n  skills: [phase-one, phase-two, my-orchestrator]\n  entrypoint: ORCHESTRATOR.md\n  roles:\n    - { name: phase-one-runner, kind: subagent, skill: phase-one, model: sonnet }\n    - { name: my-orchestrator,  kind: orchestrator }\n  registry: REGISTRY.md\n  permissions:\n    - { agent: claude, patterns: [\"Bash(mkdir -p .myworkflow/*)\"] }\n  hooks:\n    agents:\n      claude: [{ definition: hooks/my-hooks-claude.json }]\n  gitignore: [\".myworkflow/\"]\n```\n\nThe full SDD workflow in [`workflows/sdd/`](workflows/sdd/) is the best reference — it exercises every feature (roles, models, decision rules, permissions, hooks, plugins, gitignore).\n\n### Tool recipe\n\n```yaml\n# tools/my-tool.yaml\nname: my-tool\ndescription: CLI companion for my-workflow\ncommand: brew install my-org/tap/my-tool\nbinary: my-tool\ndepends_on:\n  workflow: my-workflow\n```\n\n---\n\n## 🤝 Contributing\n\nThis catalog is **community-curated** — new advisor skills, new rule packs, new MCPs, and corrections are welcome.\n\n- 🐛 Issues and discussions: [github.com/davidarce/devrune-starter-catalog/issues](https://github.com/davidarce/devrune-starter-catalog/issues)\n- 🍴 **Fork-friendly by design** — the MIT license and the flat layout are intentional. Use your own fork as your team's source of truth; DevRune doesn't care which catalog it points at.\n- ✅ Keep additions **content-only** (Markdown + YAML). Logic belongs in [DevRune](https://github.com/davidarce/DevRune).\n\n---\n\n## 🚀 Releases\n\nReleases are automated by [release-please](https://github.com/googleapis/release-please) and driven by [Conventional Commits](https://www.conventionalcommits.org/). You don't tag manually.\n\n**Flow**\n\n1. Land a PR on `main` with a Conventional Commit (`feat:` → minor, `fix:` → patch, `feat!:` / `BREAKING CHANGE:` → major after 1.0).\n2. release-please opens (or updates) a Release PR titled `chore: release X.Y.Z` with the version bump and a generated `CHANGELOG.md` diff.\n3. Merging that Release PR creates the `vX.Y.Z` tag and publishes the GitHub Release as **Latest** — that tag is what DevRune installs resolve.\n\n**Notes**\n\n- Pre-1.0 (`0.x.y`): `feat!:` bumps minor, not major. Major is reserved for the deliberate `1.0.0` graduation.\n- `chore:`, `docs:`, `test:`, `ci:`, `build:`, `style:` are excluded from the changelog. Use `feat:` / `fix:` / `refactor:` / `perf:` for changelog-worthy content updates (including catalog content curation).\n\n---\n\n## 📄 License\n\nMIT — see [LICENSE](LICENSE).\n\nCopyright (c) 2026 David Arce.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidarce%2Fdevrune-starter-catalog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidarce%2Fdevrune-starter-catalog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidarce%2Fdevrune-starter-catalog/lists"}