Not in the top 1,000 by GitHub stars
MotleyAI/living-architecture
Claude Code plugin + CLI that keeps coding agents from eroding your architecture: normative principles attached to a LikeC4 model, which is also the import law for Python and TypeScript, plus an OpenSpec-generating PR flow.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
plugin/skills/arch-cleanup/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/arch-init/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/codex-review/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/concise-comments/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/deterministic-refactor/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/fetch-coderabbit-threads/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/fetch-failed-pr-checks/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/init/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/living-architecture/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/make-diff-compliant/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/make-refactor-target-compliant/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/openspec-init/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/pr/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/pr-implement/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/pr-plan/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/pr-review/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/pr-tests/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/process-reviews/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
plugin/skills/reply-to-pr-thread/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 2c8337b5b004
No earlier version was observed for comparison.
Verified commit 2c8337b5b00416e8b17b1ae7b75c59712f037dbd
git clone --filter=blob:none --no-checkout https://github.com/MotleyAI/living-architecture.git .hotskills/motleyai-living-architecture && git -C .hotskills/motleyai-living-architecture checkout --detach 2c8337b5b00416e8b17b1ae7b75c59712f037dbd
# Copy each selected skill directory from .hotskills/motleyai-living-architecture into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/MotleyAI/living-architecture.git .hotskills/motleyai-living-architecture && git -C .hotskills/motleyai-living-architecture checkout --detach 2c8337b5b00416e8b17b1ae7b75c59712f037dbd
# Copy each selected skill directory from .hotskills/motleyai-living-architecture into .agents/skills/<skill-name>/Heat
Insufficient historyNot enough history yet to measure heat. It appears after a few days of data.
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- arch-cleanup
plugin/skills/arch-cleanup - arch-init
plugin/skills/arch-init - codex-review
plugin/skills/codex-review - concise-comments
plugin/skills/concise-comments - deterministic-refactor
plugin/skills/deterministic-refactor - fetch-coderabbit-threads
plugin/skills/fetch-coderabbit-threads - fetch-failed-pr-checks
plugin/skills/fetch-failed-pr-checks - init
plugin/skills/init - living-architecture
plugin/skills/living-architecture - make-diff-compliant
plugin/skills/make-diff-compliant - make-refactor-target-compliant
plugin/skills/make-refactor-target-compliant - openspec-init
plugin/skills/openspec-init - pr
plugin/skills/pr - pr-implement
plugin/skills/pr-implement - pr-plan
plugin/skills/pr-plan - pr-review
plugin/skills/pr-review - pr-tests
plugin/skills/pr-tests - process-reviews
plugin/skills/process-reviews - reply-to-pr-thread
plugin/skills/reply-to-pr-thread
How it works
arch-cleanup
When your agent uses it
Use to carve or tighten ONE architecture boundary in a repo with the living-architecture setup — take a coherent batch of grandfathered `#legacy` arrows (or extract a new node), refactor them away with verified moves (deterministic-refactor), and shrink the legacy-arrow baseline monotonically. Behaviour-preserving by definition; one slice = one branch/PR.
What it loads into context
Frontmatter
82 tokensAlways available to the agent
SKILL.md
1,323 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Procedure
- When is full compliance needed?
Files
../../../.claude-plugin/marketplace.jsonasset748 bytes../../../conformance/cases/doctor-plugin-invalid-utf8/repo/plugin/.claude-plugin/plugin.jsonasset16 bytes../../.claude-plugin/plugin.jsonasset875 bytesSKILL.mdcore5,485 bytesSKILL.mdcore5,485 bytesSKILL.mdcore5,485 bytesSKILL.mdcore5,485 bytesSKILL.mdcore5,485 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
# Carve one boundary slice
A slice moves code until a batch of grandfathered edges dies, with a
deterministic gate proving nothing dangles. It is behaviour-preserving: no new
behaviour, no new tests, no OpenSpec spec deltas. The legacy-arrow ratchet plus
the green suite ARE the spec, so the /la:pr stage flow does not apply — but
each slice still gets its own issue, branch, and PR.
## Procedure
1. **Pick the slice.** List the model's `#legacy` arrows (their count is
`legacy_arrows.baseline` in `index.yaml`); propose a coherent batch — oneView the complete source on GitHubarch-init
When your agent uses it
Build a repo's first living-architecture model — write the language sections of architecture/index.yaml, scaffold the as-is model from the measured imports (la-arch-scaffold), choose the wedge with the user, draft the principles from the repo's own instructions, map the specs, and get la-arch-check green. Syntax and maintenance are in the la:living-architecture reference.
What it loads into context
Frontmatter
84 tokensAlways available to the agent
SKILL.md
1,097 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Preconditions
- 2. Language sections
- 3. Scaffold
- 4. Choose the wedge
- 5. Principles
- 6. Spec mapping
- 7. Green
- 8. Flip the gate
Files
SKILL.mdcore4,384 bytesSKILL.mdcore4,384 bytesSKILL.mdcore4,384 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
# Build the first architecture model
The syntax of the model, `index.yaml`, views and arc42 files, and every check `la-arch-check` runs, are in
the `la:living-architecture` skill; read it first. Everything this skill writes is normative, like tests:
show each model, arc42 and `index.yaml` edit and get the user's OK before landing it.
## 1. Preconditions
- `architecture/index.yaml` does not exist (otherwise this is maintenance: use `la:living-architecture`).
- `openspec: true` in the config means `openspec/` is healthy; if not, run `la:openspec-init` first.
- A type check with a baseline: run `la-typecheck`. If it checks a language that has no baseline, offer
`la-typecheck --write-baseline` (the one legitimate recording; afterwards the baseline only shrinks). If itView the complete source on GitHubcodex-review
When your agent uses it
Use the codex MCP server to review the current git diff. Focus on correctness, regressions, security issues, tests, and maintainability. Return only actionable findings with file/line references and severity. Do not modify files.
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
217 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore949 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
If `la-config get reviewers.codex` prints `false`, this repo has turned Codex reviews off: say so, and run the
review only if the user confirms. If the Codex MCP server (`mcp__codex__codex`) is not available, stop and tell
the user; never substitute another reviewer.
Use the codex MCP server to review the current git diff.
Focus on correctness, regressions, security issues, tests, and maintainability.
Return only actionable findings with file/line references and severity.
Do not modify files.View the complete source on GitHubconcise-comments
When your agent uses it
Rules for concise code comments/docstrings, plus a pass to trim verbose ones. Use when writing or reviewing code, or when asked to reduce comment verbosity / trim over-commented code / cut docstring bloat. Referenced by /la:pr and /la:process-reviews.
What it loads into context
Frontmatter
65 tokensAlways available to the agent
SKILL.md
829 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The test
- For / not for
- Limits (defaults; exceed only with a stated reason)
- Delete on sight
- The pass (`/la:concise-comments`)
Files
SKILL.mdcore3,344 bytesSKILL.mdcore3,344 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Concise comments & docstrings
Prevention: follow these when writing. Cleanup: run the pass below when invoked as `/la:concise-comments`.
## The test
Keep a comment only if a competent reader of THIS codebase couldn't infer it from the code and names. Otherwise delete it, or cut it to the one missing fact in one line.
## For / not for
For: the non-obvious *why* (constraint, invariant, footgun, edge-case gotcha) and a one-line *what* on public APIs.
Not for: design narrative, alternatives-considered, defending the approach, repro steps, byte-count walkthroughs, ticket history, or restating the code. Those go in the PR description, the issue, or a test.
## Limits (defaults; exceed only with a stated reason)View the complete source on GitHubdeterministic-refactor
When your agent uses it
Use to rename or move a module/class/function/method/attribute (Python or TypeScript) and update all imports/references, with a deterministic check that nothing was missed. Mutator = dr-refactor; the guarantee = la-typecheck + dr-mock-lint + the test suite. Only sound on a compliant target (see docs/deterministic-refactoring.md).
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
774 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Procedure
- Commands
Files
SKILL.mdcore3,078 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
# Deterministic refactor
The mutator is best-effort — no tool reliably rewrites every annotated
`obj.attr`, `super()` call, and override. The **type-check gate is the
guarantee**, and it is only sound on code that meets the compliance conditions
(`docs/deterministic-refactoring.md`). If the blast radius is not typed, run `la:make-refactor-target-compliant`
first.
The file's language decides the mutator and its idioms: read
`<this skill's base directory>/../../languages/<language>.md` for each language
the refactor touches (`la-config get languages` lists the repo's).
View the complete source on GitHubfetch-coderabbit-threads
When your agent uses it
Use when the user asks to fetch / list / read / show unresolved CodeRabbit review threads on a GitHub PR. Pulls thread URL, file:line, author, and full comment body for every thread CodeRabbit opened that is not yet resolved, plus CodeRabbit's review-summary nitpicks.
What it loads into context
Frontmatter
72 tokensAlways available to the agent
SKILL.md
587 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How to run
- Output
- Steps
- Why this skill
Files
SKILL.mdcore2,348 bytesSKILL.mdcore2,348 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Fetch unresolved CodeRabbit review threads from a PR
## How to run
```bash
la-fetch-coderabbit-threads <PR_NUMBER> [--repo OWNER/REPO] [--all-authors]
```
Works in any repo; it does not read `living-architecture.yaml`.
- `<PR_NUMBER>` — required, the PR number.
- `--repo OWNER/REPO` — optional; defaults to the repo of the current git directory (auto-detected via `gh repo view`).View the complete source on GitHubfetch-failed-pr-checks
When your agent uses it
Use when the user asks to check / fetch / list / show failed CI checks (GitHub Actions, external CI) on a GitHub PR — including details/logs of the failures. Pulls the statusCheckRollup, filters to non-passing terminal states, and (for GitHub Actions runs) appends the failed-step log excerpt.
What it loads into context
Frontmatter
81 tokensAlways available to the agent
SKILL.md
856 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How to run
- Output
- What counts as "failed"
- Steps
- Why use this instead of `gh pr checks` / `gh run view` directly
Files
SKILL.mdcore3,241 bytesSKILL.mdcore3,241 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Fetch failed CI checks (and their failed-step logs) for a PR
## How to run
```bash
la-fetch-failed-pr-checks <PR_NUMBER> [--repo OWNER/REPO] [--max-log-lines N]
```
- `<PR_NUMBER>` — required.
- `--repo OWNER/REPO` — optional; defaults to the cwd repo via `gh repo view`.
- `--max-log-lines N` — cap each failed job's log excerpt at N lines (default 200). Pass `0` to skip log fetching entirely.
View the complete source on GitHubinit
When your agent uses it
Onboard a repo to the la plugin — detect its tracker, test/lint/type-check commands, Codex, Sonar and any existing OpenSpec or architecture setup, propose a complete living-architecture.yaml with a source for every key, ask only what cannot be detected, write the file, then offer the type-check baseline and la:arch-init. Also the fast path other skills run when a repo has no config, and the way to edit or convert an existing config.
What it loads into context
Frontmatter
102 tokensAlways available to the agent
SKILL.md
1,412 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Detect
- 2. Propose
- 3. One question round
- 4. OpenSpec scaffold
- 5. Write the file
- 6. Doctor
- 7. Next steps (full run only)
Files
SKILL.mdcore5,617 bytesSKILL.mdcore5,617 bytesSKILL.mdcore5,617 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output — unless the only failure is the existing `living-architecture.yaml` being invalid or declaring an older format, which this skill converts (steps 1 and 5).
# Onboard a repo
`living-architecture.yaml` records each gate of the flow as an explicit decision; its presence means the repo
is onboarded. Keys, defaults and the doctor's consistency checks are in `docs/configuration.md` of the plugin
repo; `la-config show` prints the resolved values.
**Fast path.** When another skill's preflight reports the missing config, run steps 1–6 only, then hand back
to that skill. A full run (the user invoked `/la:init`) continues to step 7.
## 1. Detect
Read, don't ask. For each key note the value and where it came from:View the complete source on GitHubliving-architecture
When your agent uses it
Reference for the living-architecture layer (LikeC4 structure model + arc42 principles + model-truth import enforcement + cross-check) — its syntax, the checks, and how to maintain it alongside the /la:pr + OpenSpec flow. Building the first model is la:arch-init; carving a boundary is la:arch-cleanup.
What it loads into context
Frontmatter
78 tokensAlways available to the agent
SKILL.md
3,388 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Alignment rules
- File layout — the tree is virtual
- arc42 element file — required shape
- Enforcement wiring — the one import law
- Maintenance
- Interaction with /la:pr
Files
SKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytesSKILL.mdcore13,865 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Living architecture
Four layers, one element id everywhere. Behaviour lives in OpenSpec; everything
cross-cutting lives here:
| Layer | Question | Artifact | Property |
|---|---|---|---|
| Behaviour | what does it do, now? | `openspec/specs/<id>/spec.md` | living, merged by OpenSpec |
| Structure | how is it arranged, now? | LikeC4 model + views | living; ONE model, diagrams are projected views |
| Rationale | why is it this way, and what must all code here obey? | arc42 file per element that earns prose | living, edited in place |
| Enforcement | is the code actually like this? | `arch_check` model-truth (the one import law) + LikeC4 model validation, run in the flow gates | executable, blocking |
View the complete source on GitHubmake-diff-compliant
When your agent uses it
Use to bring exactly the source files a PR/branch touches up to the deterministic-refactor compliance conditions (typed, overrides marked, typed test doubles), so a future refactor over them is verifiable. Scoped to the diff — grows compliance monotonically, no repo-wide migration.
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
376 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
Files
SKILL.mdcore1,574 bytesSKILL.mdcore1,574 bytesSKILL.mdcore1,574 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Make the diff compliant
Raise compliance one PR at a time instead of a big-bang migration: every diff
leaves the files it touched fully refactor-verifiable.
## Steps
1. **Changed source files:**
`git diff --name-only <base>...HEAD` (base = the PR's target branch), kept to
the repo languages' sources (`la-config get languages`, then
`la-config get lang.<language>.source_globs`).
2. **Report:** `dr-compliance <changed files>` — each file gets its language'sView the complete source on GitHubmake-refactor-target-compliant
When your agent uses it
Use BEFORE renaming a symbol/attribute (Python or TypeScript) to make its blast radius verifiable — type the code that might reference it (untyped params/vars that could hold the class, classes with matching attribute names, overrides not marked as such) so the post-rename type-check gate is sound.
What it loads into context
Frontmatter
75 tokensAlways available to the agent
SKILL.md
575 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
Files
SKILL.mdcore2,367 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Make a refactor's blast radius compliant
A rename is only provable over code the type checker can resolve. This closes
the blind spots first, so the `la:deterministic-refactor` gate afterwards is sound.
The idioms for each language are in
`<this skill's base directory>/../../languages/<language>.md`.
## Steps
1. **Identify the target:** the symbol, and for a member rename the attribute
NAME and its owning class.
2. **Enumerate blind spots (checking machinery):**View the complete source on GitHubopenspec-init
When your agent uses it
Initialize or repair OpenSpec in the current repo for the /la:pr flow. Ensures the openspec CLI is available (global install, npx fallback), scaffolds openspec/ with `openspec init --tools none` (corpus only, no /opsx:* commands), and verifies. Invoked by /la:pr when openspec/ is absent or invalid, or run directly.
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
873 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Resolve the CLI (set `OPENSPEC_CMD`)
- Step 2 — Check repo state
- Step 3 — Initialize (absent)
- Step 4 — Repair (invalid)
- Step 5 — Verify and stage
Files
SKILL.mdcore3,091 bytes
Read SKILL.md
Bring the current repo to a valid OpenSpec state: the `openspec` CLI resolvable
and an `openspec/` corpus (`specs/` + `changes/`) present and healthy. Corpus
only — no `/opsx:*` slash commands or AGENTS wiring, because the `/la:pr` flow
replaces propose/apply.
## Step 1 — Resolve the CLI (set `OPENSPEC_CMD`)
1. If `command -v openspec` succeeds → `OPENSPEC_CMD=openspec`.
2. Else install globally: `npm i -g @fission-ai/openspec` (no sudo where the npm
global prefix is user-writable — nvm/fnm/`~/.local`-style node). Re-check
`command -v openspec`.
3. If the global install fails (non-writable prefix, no permission, or offline):
fall back to `OPENSPEC_CMD="npx -y @fission-ai/openspec@1.11.0"` (bump the pin
as needed). If even npx can't fetch, STOP and tell me — do not proceed.View the complete source on GitHubpr
When your agent uses it
Spec-driven change flow for a task given to an agent. Pulls in the tracker issue (Linear or GitHub, per `living-architecture.yaml`) that the current git branch belongs to, and combines it with whatever the user typed when invoking the skill. Rehydrates context, detects the current stage, and dispatches to the stage skills la:pr-plan → la:pr-tests → la:pr-implement → la:pr-review.
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
3,314 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The four stages
- Stopping policy
- The plan is frozen once pr-plan ends
- Nothing the next stage needs lives in chat
- Commit at the end of every stage
- Normative harnesses (living-architecture repos)
- Rehydrate — pull in the tracker issue for the current branch
- Detect the stage
- Dispatch
Files
SKILL.mdcore13,091 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
I want a detailed spec-driven flow. The brief is the union of:
1. The tracker issue tied to the current branch (see "Rehydrate" below), AND
2. Whatever I just typed when invoking this skill.
## The four stages
The flow runs as four stage skills in this fixed order, and I reset the
session (`/clear`) between stages. Each stage ends at a hard stop; everything
a fresh session needs is on disk or in the tracker, so any stage can resume from
just the branch name:
1. **`pr-plan`** — interview me, Codex-review the plan (whenView the complete source on GitHubpr-implement
When your agent uses it
Stage 3 of 4 of the /la:pr flow — implement until every test from the pr-tests stage passes, then with the user's explicit go-ahead commit, push, and open the PR. Normally dispatched by /la:pr; if the /la:pr context (BRANCH, CHANGE_ID, OPENSPEC, tracker issue) is not already loaded in this session, invoke the la:pr skill instead.
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
1,903 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Implement until tests pass
- Step 2 — Local gates (before commit)
- Step 3 — Ask me to push and open the PR
- Step 4 — Hard stop
Files
SKILL.mdcore7,728 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
**Stage 3 of 4 of the `/la:pr` flow.** Prerequisite: `/la:pr` has run in this
session and established `BRANCH`, `CHANGE_ID`, `OPENSPEC`, and the full tracker
issue (body + comments), if there is one. If any of that is missing, invoke the `la:pr` skill
instead — it rehydrates and dispatches back here. The `/la:pr` stopping policy
applies throughout this stage.
Before writing anything, recover the durable plan (the
`openspec/changes/<CHANGE_ID>/` folder when `OPENSPEC=1`, else the plan
comment on the tracker issue) and the failing tests already on disk from
`pr-tests`.
## Step 1 — Implement until tests passView the complete source on GitHubpr-plan
When your agent uses it
Stage 1 of 4 of the /la:pr flow — interview the user to turn the tracker issue + typed brief into a detailed spec, Codex-review the plan, emit the OpenSpec change (OpenSpec repos only), and make the plan durable. Normally dispatched by /la:pr; if the /la:pr context (BRANCH, CHANGE_ID, OPENSPEC, tracker issue) is not already loaded in this session, invoke the la:pr skill instead.
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
2,361 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Combine and interview
- Step 2 — Codex review of the plan
- Step 3 — Emit the OpenSpec change (OpenSpec repos only)
- Step 4 — Make the plan durable, then hard stop
Files
SKILL.mdcore9,622 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
**Stage 1 of 4 of the `/la:pr` flow.** Prerequisite: `/la:pr` has run in this
session and established `BRANCH`, `CHANGE_ID`, `OPENSPEC`, and the full tracker
issue (body + comments), if there is one. If any of that is missing, invoke the `la:pr` skill
instead — it rehydrates and dispatches back here. The `/la:pr` stopping policy
applies throughout this stage.
## Step 1 — Combine and interview
Treat the tracker issue body + comments AND whatever I typed when invoking
`/la:pr` as the combined brief. In case of conflict, what I typed has higher
priority but ask to be sure.
View the complete source on GitHubpr-review
When your agent uses it
Stage 4 of 4 of the /la:pr flow — run /la:process-reviews in a loop until every source is green, then (OpenSpec repos only) archive the change, push, and keep looping on the archived HEAD until every source is green again so the PR can merge. Normally dispatched by /la:pr; if the /la:pr context (BRANCH, CHANGE_ID, OPENSPEC, tracker issue) is not already loaded in this session, invoke the la:pr skill instead.
What it loads into context
Frontmatter
114 tokensAlways available to the agent
SKILL.md
2,947 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Review loop (batch local fixes; push only once per batch)
- Step 2 — Archive the OpenSpec change, then I merge (OpenSpec repos only)
Files
SKILL.mdcore11,706 bytesSKILL.mdcore11,706 bytesSKILL.mdcore11,706 bytesSKILL.mdcore11,706 bytesSKILL.mdcore11,706 bytesSKILL.mdcore11,706 bytesSKILL.mdcore11,706 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
**Stage 4 of 4 of the `/la:pr` flow.** Prerequisite: `/la:pr` has run in this
session and established `BRANCH`, `CHANGE_ID`, `OPENSPEC`, and the full tracker
issue (body + comments, if there is one), and the PR for `BRANCH` exists. If any of that is
missing, invoke the `la:pr` skill instead — it rehydrates and dispatches back
here. The `/la:pr` stopping policy applies throughout this stage.
**Review sources.** `la:process-reviews` owns everything per source: which bots
are on this PR (`la-pr-reviewers`), waiting for them, fetching, validating, and
handling invalid findings. Every step below that names CodeRabbit or Sonar
applies only when that bot is on the PR. Codex follows `reviewers.codex`: when
`la-config get reviewers.codex` prints `false` there is no Codex gate; when it
is on and the Codex MCP server (`mcp__codex__codex`) is missing, STOP and tellView the complete source on GitHubpr-tests
When your agent uses it
Stage 2 of 4 of the /la:pr flow — write the full failing test suite for the agreed plan (TDD-first), then Codex-review the tests against the plan. Normally dispatched by /la:pr; if the /la:pr context (BRANCH, CHANGE_ID, OPENSPEC, tracker issue) is not already loaded in this session, invoke the la:pr skill instead.
What it loads into context
Frontmatter
91 tokensAlways available to the agent
SKILL.md
1,057 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Write the tests first
- Step 2 — Codex review of the tests against the plan
- Step 3 — Commit the changed files
- Step 4 — Hard stop
Files
SKILL.mdcore4,133 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory> --require-config` once per session before using any `la-*` or `dr-*` command. If it reports the missing-config finding (the one naming `/la:init`), run the fast path of the `la:init` skill, then re-run this preflight; stop and show the user its output on anything it still reports, or on any other failure.
**Stage 2 of 4 of the `/la:pr` flow.** Prerequisite: `/la:pr` has run in this
session and established `BRANCH`, `CHANGE_ID`, `OPENSPEC`, and the full tracker
issue (body + comments), if there is one. If any of that is missing, invoke the `la:pr` skill
instead — it rehydrates and dispatches back here. The `/la:pr` stopping policy
applies throughout this stage.
Before writing anything, recover the durable plan from `pr-plan`:
- `OPENSPEC=1` — read the whole change folder
`openspec/changes/<CHANGE_ID>/` (proposal, design, tasks, delta specs).
- `OPENSPEC=0` — the finalized plan is a comment on the tracker issue.
## Step 1 — Write the tests firstView the complete source on GitHubprocess-reviews
When your agent uses it
Use when the user asks to process / triage / address / handle PR reviews from CodeRabbit, SonarQube, Codex, and CI all together (CodeRabbit and Sonar only when they ran on the PR). First waits (polling every 1 min, max 30 min) until CodeRabbit, Sonar, and every CI check on the PR are in a terminal state — while a Codex review runs concurrently against the local diff. Then fetches unresolved threads from all three code-review sources plus failed CI checks, validates each against the actual code / log, handles invalid ones in place (reply on thread / NOSONAR comment), and presents a unified plan for fixing the valid ones (split into logical groups if more than 3). Invoked from la:pr-review, it returns the triaged list instead.
What it loads into context
Frontmatter
178 tokensAlways available to the agent
SKILL.md
7,508 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs
- Steps
- Constraints
- When NOT to use this skill
Files
SKILL.mdcore30,958 bytesSKILL.mdcore30,958 bytesSKILL.mdcore30,958 bytesSKILL.mdcore30,958 bytesSKILL.mdcore30,958 bytesSKILL.mdcore30,958 bytesSKILL.mdcore30,958 bytesSKILL.mdcore30,958 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Process unresolved review feedback (CodeRabbit + SonarQube + Codex + failed CI)
Combine CodeRabbit, SonarQube, Codex, and failed CI feedback into a single triage workflow: one sweep over every source. Run standalone, it stops at a written plan and does not start fixing. Invoked from `la:pr-review`, it returns the triaged list and `la:pr-review` fixes it.
**Sources on this PR.** Run `la-pr-reviewers <PR>` first. It prints `{"coderabbit": <bool>, "sonar": {"present": <bool>, "project_key": <key|null>}}`, detected from the PR itself, never from the repo config. Skip every step for a bot that is not on the PR (its fetches, validation, invalid-handling, and plan header count — show it as `off`). Re-run it at each sweep: CodeRabbit can first appear after a push.
**Codex follows `reviewers.codex`.** If `la-config get reviewers.codex` prints `false`, skip every Codex step and show Codex as `off`. Otherwise, if the Codex MCP server (`mcp__codex__codex`) is not available, STOP and tell me: this repo requires Codex reviews, so never skip one silently.
## Inputs
- PR number. If the user didn't say, infer from the cwd: `gh pr view --json number -q .number`. If that fails, ask the user.
- Repository (auto-detected from cwd via `gh repo view`, or pass explicitly).View the complete source on GitHubreply-to-pr-thread
When your agent uses it
Use when the user asks to reply / comment on a CodeRabbit (or any) PR review thread, OR when posting a reasoning/explanation reply tagging @coderabbitai for a thread you've classified as invalid. Wraps `gh api .../pulls/N/comments/<id>/replies`. Body is read from stdin.
What it loads into context
Frontmatter
74 tokensAlways available to the agent
SKILL.md
645 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How to run
- Steps
- Why use this instead of `gh api` directly
Files
SKILL.mdcore2,566 bytesSKILL.mdcore2,566 bytes
Read SKILL.md
**Preflight:** run `la-doctor --plugin <this skill's base directory>` once per session before using any `la-*` or `dr-*` command; if it fails, stop and show the user its output.
# Reply to a GitHub PR review thread
Wraps the GitHub `POST /repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies` endpoint. Works for any review thread on any PR, but the canonical use case is replying to CodeRabbit threads — never resolve them, always reply with rationale.
## How to run
```bash
# Form 1 — paste the discussion URL straight from the CodeRabbit comment:
echo "@coderabbitai <reason>" | \
la-reply-to-pr-thread https://github.com/OWNER/REPO/pull/<PR>#discussion_r<COMMENT_ID>
# Form 2 — explicit IDs:View the complete source on GitHubSkills included
- arch-cleanup
- arch-init
- codex-review
- concise-comments
- deterministic-refactor
- fetch-coderabbit-threads
- fetch-failed-pr-checks
- init
- living-architecture
- make-diff-compliant
- make-refactor-target-compliant
- openspec-init
- pr
- pr-implement
- pr-plan
- pr-review
- pr-tests
- process-reviews
- reply-to-pr-thread
Repository facts
- License
- MIT
- Created
- Sep 25, 2026
- Last pushed
- Oct 28, 2026
- Forks
- 1
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 44 notes
plugin/skills/arch-cleanup/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/arch-cleanup/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/arch-cleanup/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/arch-cleanup/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/arch-init/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/arch-init/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/concise-comments/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/fetch-coderabbit-threads/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/fetch-failed-pr-checks/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/init/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/init/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugin/skills/living-architecture/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 1 dangerous shell commandin 1 file: openspec-init/SKILL.md:14
- 10 network referencesin 3 files: plugin/.claude-plugin/plugin.json:7 fetch-failed-pr-checks/SKILL.md:36 reply-to-pr-thread/SKILL.md:15
- No hidden or obfuscated text
- No instruction overrides
- No executable scripts
- No access to secrets
- No requests to vote in Hot
Show all 11 signals by file
plugin/.claude-plugin/plugin.json
- Network accessline 7
}, "license": "MIT", "homepage": "https://github.com/MotleyAI/living-architecture", - Network accessline 8
"license": "MIT", "homepage": "https://github.com/MotleyAI/living-architecture", "repository": "https://github.com/MotleyAI/living-architecture", - Network accessline 9
"homepage": "https://github.com/MotleyAI/living-architecture", - Network accessline 10
"repository": "https://github.com/MotleyAI/living-architecture",
plugin/skills/fetch-failed-pr-checks/SKILL.md
- Network accessline 36
"conclusion": "FAILURE", "status": "COMPLETED", "details_url": "https://github.com/.../actions/runs/12345/job/67890", - Network accessline 37
"status": "COMPLETED", "details_url": "https://github.com/.../actions/runs/12345/job/67890", "completed_at": "2026-05-03T07:42:13Z", - Network accessline 38
"details_url": "https://github.com/.../actions/runs/12345/job/67890",
plugin/skills/openspec-init/SKILL.md
- Dangerous shell operationline 14
2. Else install globally: `npm i -g @fission-ai/openspec` (no sudo where the npm
plugin/skills/reply-to-pr-thread/SKILL.md
- Network accessline 15
# Form 1 — paste the discussion URL straight from the CodeRabbit comment: echo "@coderabbitai <reason>" | \ la-reply-to-pr-thread https://github.com/OWNER/REPO/pull/<PR>#discussion_r<COMMENT_ID> - Network accessline 16
echo "@coderabbitai <reason>" | la-reply-to-pr-thread https://github.com/OWNER/REPO/pull/<PR>#discussion_r<COMMENT_ID> - Network accessline 17
la-reply-to-pr-thread https://github.com/OWNER/REPO/pull/<PR>#discussion_r<COMMENT_ID>
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 7 facts
- Network access in code of the SKILL.mdfetch-failed-pr-checks/SKILL.md:36High confidence
- Network access in code of the SKILL.mdfetch-failed-pr-checks/SKILL.md:37High confidence
- Network access in code of the SKILL.mdfetch-failed-pr-checks/SKILL.md:38High confidence
- Dangerous shell operation in prose of the SKILL.mdopenspec-init/SKILL.md:14Low confidence
- Network access in code of the SKILL.mdreply-to-pr-thread/SKILL.md:15High confidence
- Network access in code of the SKILL.mdreply-to-pr-thread/SKILL.md:16High confidence
- Network access in code of the SKILL.mdreply-to-pr-thread/SKILL.md:17High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md plugin/skills/arch-cleanup/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md plugin/skills/arch-cleanup/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md plugin/skills/arch-cleanup/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md plugin/skills/arch-cleanup/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.