Skip to content

Clarify runbook input source docs#253

Open
tobyhede wants to merge 1 commit intomainfrom
2026-04-30-cleanup-II
Open

Clarify runbook input source docs#253
tobyhede wants to merge 1 commit intomainfrom
2026-04-30-cleanup-II

Conversation

@tobyhede
Copy link
Copy Markdown
Owner

@tobyhede tobyhede commented Apr 30, 2026

Summary

Summary by CodeRabbit

  • Documentation
    • Updated runbook format documentation with expanded syntax support for inputs and outputs, including inline bracket sequences and quoted entries.
    • Clarified input value sourcing from configuration files, CLI flags, environment variables, and parent runbooks.
    • Documented variable resolution precedence order for runbook parameters.
    • Specified case-insensitive handling for frontmatter keys.

Testing

  • npm run verify

Targeted tests or checks:

Review Notes

Check all that apply:

  • Public CLI behavior changed; docs and JSON schema output were checked.
  • Runbook syntax or parser behavior changed; docs/SPEC.md, docs/FORMAT.md, and
    runbook fixtures were checked.
  • Persisted runbook state changed; stale-state handling follows the no-migration rule.
  • Security policy, sandbox, path resolution, or command execution changed; traversal,
    symlink escape, deny precedence, env leakage, and fail-closed behavior were checked.
  • GitHub Actions changed; actions remain SHA-pinned with version comments.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 30, 2026

📝 Walkthrough

Walkthrough

Documentation is updated for runbook format: inputs:, required:, and outputs: frontmatter now accept inline bracket sequences alongside list syntax; public field matching is case-insensitive; OUTPUTS directives can include quoted entries; and parameter value sourcing and resolution precedence are clarified.

Changes

Cohort / File(s) Summary
Runbook Frontmatter Grammar
docs/FORMAT.md
Expanded grammar for inputs: and required: to accept inline bracket sequences; outputs: now supports both list and inline bracket forms with quoted/unquoted entries; public field matching declared case-insensitive; step/substep OUTPUTS directives gain quoted_output_entry alternative; removed note about deprecated INPUTS directive.
Parameter Value Sourcing & Precedence
packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
Clarified that INPUTS/REQUIRED declarations are name-only; parameter values originate from .rundown/config.yaml, CLI flags (--input, --input-json, --input-file), RD_INPUT_* env vars, or parent-forwarded variables; updated resolution precedence hierarchy and MISSING_REQUIRED_VARS failure condition; revised guidance on template variables and FOR-loop data sourcing.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 7 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description uses the template structure but is entirely a placeholder with unchecked boxes; no actual summary, testing details, or review notes are provided. Replace '@coderabbitai summary' with a substantive summary. Specify which docs were updated, what grammar/guidance changed, and whether syntax/parser changes occurred. Check relevant Review Notes boxes and provide targeted test details.
✅ Passed checks (7 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Clarify runbook input source docs' directly and specifically describes the main change—documentation clarification for runbook input sources—matching the file summaries.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Persisted State Compatibility ✅ Passed PR modifies only documentation files (docs/FORMAT.md and SKILL.md); no persisted state code, schemas, migrations, or lifecycle handling logic touched.
Cli Schema Coverage ✅ Passed PR modifies only documentation files (FORMAT.md and SKILL.md) clarifying grammar notation and input source precedence without altering CLI output behavior, OutputEmitter usage, schema definitions, or command exports.
Sha-Pinned Workflow Actions ✅ Passed No GitHub Actions workflow files were modified. PR contains only documentation changes to docs/FORMAT.md and packages/claude-code-plugin/skills/writing-runbooks/SKILL.md.
Security Policy Review ✅ Passed PR modifies only documentation (docs/FORMAT.md and SKILL.md) to clarify existing input source behavior; no code changes to security-sensitive implementation, policy engine, filesystem sandbox, or variable discovery mechanisms.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2026-04-30-cleanup-II
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch 2026-04-30-cleanup-II

Review rate limit: 4/5 reviews remaining, refill in 12 minutes.

Comment @coderabbitai help to get the list of available commands and usage tips.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying rundown with  Cloudflare Pages  Cloudflare Pages

Latest commit: 99dec78
Status: ✅  Deploy successful!
Preview URL: https://c6907342.rundown-7hl.pages.dev
Branch Preview URL: https://2026-04-30-cleanup-ii.rundown-7hl.pages.dev

View logs

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/FORMAT.md`:
- Around line 59-63: The inline grammar currently disallows spaces around commas
and inside brackets; update inline_sequence and inline_output_sequence to accept
optional whitespace around separators and at the bracket boundaries.
Specifically, change inline_sequence (symbol inline_sequence) to allow optional
ws before/after each comma and optional ws after the opening "[" and before the
closing "]", and change inline_output_sequence (symbol inline_output_sequence)
similarly so the pattern becomes "[" ws? variable_name ( ws? "," ws?
variable_name )* ws? "]" and "[" ws? ( output_sequence_entry ( ws? "," ws?
output_sequence_entry )* )? ws? "]" respectively, leaving output_sequence_entry,
output_entry, and quoted_output_entry unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: e0ab62ba-4ef7-4694-97da-9e029a7f338c

📥 Commits

Reviewing files that changed from the base of the PR and between 39b6c03 and 99dec78.

📒 Files selected for processing (2)
  • docs/FORMAT.md
  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📜 Review details
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: performance-test
  • GitHub Check: Cloudflare Pages
🧰 Additional context used
📓 Path-based instructions (2)
docs/**/*.md

⚙️ CodeRabbit configuration file

docs/**/*.md: Documentation changes. Focus on:

  • Accuracy against current CLI behavior and public Rundown specification.
  • Updating linked docs together when public syntax, output schema, policy behavior, or runbook discovery changes.
  • Keeping examples executable and aligned with package scripts.

Files:

  • docs/FORMAT.md
packages/claude-code-plugin/skills/**/*.md

⚙️ CodeRabbit configuration file

packages/claude-code-plugin/skills/**/*.md: Plugin skill instructions. Focus on:

  • Accuracy of tool names, command examples, and workflow sequencing.
  • No stale references to removed runbooks, templates, or package commands.
  • Clear handoff instructions when skills generate plans or delegate work.

Files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
🧠 Learnings (18)
📓 Common learnings
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/write-plan.runbook.md:68-91
Timestamp: 2026-04-06T02:43:13.971Z
Learning: In tobyhede/rundown, `write-plan.runbook.md` and `review-plan.runbook.md` under `packages/claude-code-plugin/runbooks/planning/` are intentionally separate runbooks. `write-plan` creates the plan; `review-plan` validates it. They are composed at a higher orchestration level (e.g., `meta/end-to-end-test.runbook.md` or manual invocation with `--var PlanPath=...`). Do NOT flag the absence of a direct chain between these two runbooks as a workflow gap — coupling them would reduce flexibility by design.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review-plan.runbook.md:7-28
Timestamp: 2026-04-06T02:43:16.222Z
Learning: In tobyhede/rundown, runbook template variables (e.g., `{{ PlanPath }}`, `{{ TargetRunbook }}`) that are not supplied at invocation time are preserved as literal text per spec. The first step that reads the unresolved variable will fail with a clear error, so adding explicit upfront validation guards (e.g., `test -n "{{ PlanPath }}"`) is considered unnecessary boilerplate without meaningful UX improvement. Do not flag missing validation guards for required runbook variables in future reviews.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 202
File: packages/cli/src/commands/status.ts:22-23
Timestamp: 2026-04-15T05:28:44.644Z
Learning: In tobyhede/rundown, the removal of `--json` from all CLI commands (status, ls, pass, fail, run, etc.) in PR `#202` is an intentional breaking change. JSON output is now the default for all commands; `--json` is fully removed and must NOT be re-added as a deprecated alias. Scripts that previously passed `--json` simply need to remove the flag — they continue to receive JSON output. This is documented and tested in `packages/cli/__tests__/commands/json-output.test.ts`. Do not flag the removal of `--json` as a backward-compatibility concern in future reviews.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review-plan.runbook.md:36-40
Timestamp: 2026-04-06T03:16:22.299Z
Learning: In tobyhede/rundown (`packages/cli/src/helpers/resolve-runbook.ts`), `resolveRunbookFile` performs recursive subdirectory scanning within each source root (project at `.claude/rundown/runbooks/`, plugin at `$CLAUDE_PLUGIN_ROOT/runbooks/`, and bundled). A bare filename like `review-technical-accuracy.runbook.md` or `retry-success.runbook.md` will resolve correctly even when the actual file lives in a subdirectory (e.g., `review/` or `retries/`). Do NOT flag bare runbook filename references in runbook delegate lists as broken paths requiring a subdirectory prefix — name-based discovery handles this transparently.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 210
File: packages/claude-code-plugin/runbooks/meta/end-to-end-test.runbook.md:27-31
Timestamp: 2026-04-27T06:40:40.803Z
Learning: In tobyhede/rundown `*.runbook.md` files, a runbook-list entry (e.g., `- planning/review-plan.runbook.md`) in a step WITHOUT a `- DELEGATE` directive is an intentional inline linkage pattern: the parent runbook walks the referenced runbook in-session as an implicit substep (per SPEC §3.2). This is distinct from a step WITH `- DELEGATE`, which dispatches an out-of-process subagent. Both are valid runbook-list patterns with different execution boundaries. Do NOT flag the absence of `- DELEGATE` on a runbook-list step as a missing directive — it is a deliberate choice between in-session (inline) and out-of-process (delegate) execution.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 92
File: runbooks/README.md:49-49
Timestamp: 2026-03-10T12:24:15.826Z
Learning: In the `tobyhede/rundown` repository, the requirement that every scenario must include at least one of a top-level `result:` or an `expect.result` field is authoritatively documented at `docs/SCENARIOS.md` line 46. The `runbooks/README.md` intentionally keeps only a brief usage hint and defers to `docs/SCENARIOS.md` for full schema details.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 187
File: packages/claude-code-plugin/runbooks/planning/review/review-technical-accuracy.runbook.md:29-31
Timestamp: 2026-04-07T22:54:01.013Z
Learning: In tobyhede/rundown, `PASS COMPLETE` on the "Review the plan for [dimension]" step (Step 3) in review sub-runbooks under `packages/claude-code-plugin/runbooks/planning/review/` (e.g., `review-technical-accuracy.runbook.md`, `review-build-runtime.runbook.md`) is intentional. When a review passes with no findings, there is nothing to emit and Step 4 (write the review artifact) is intentionally skipped. The synthesize runbook (`review-synthesize.runbook.md`) handles the absence of per-dimension `plan-review-{{ RunId }}.json` artifacts correctly. Do NOT flag `PASS COMPLETE` on the review step as a control-flow bug that skips artifact emission.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/write-plan.runbook.md:94-97
Timestamp: 2026-04-06T04:20:08.732Z
Learning: In tobyhede/rundown `.runbook.md` files, a blank line between a step heading (e.g., `## 10. Verify Plan Structure`) and its transition directives (e.g., `- PASS COMPLETE`, `- FAIL GOTO 8`) is cosmetic only. The Rundown parser correctly parses the control-flow regardless of the blank line. Do NOT flag blank lines between headings and transition directives as a potential parsing or control-flow issue — `rd check` validates steps correctly and scenario tests confirm the expected routing behavior.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/meta/end-to-end-test.runbook.md:8-18
Timestamp: 2026-04-06T02:43:17.509Z
Learning: In `tobyhede/rundown` runbooks (e.g., `packages/claude-code-plugin/runbooks/meta/end-to-end-test.runbook.md`), empty or unset `vars:` values are intentionally left without shell-level validation guards. By design, undefined/empty template variables are preserved as literal `{{ VariableName }}` text, which produces a clear error when the step attempts to resolve the runbook reference or command. Adding input-guard steps to every runbook that accepts variables is considered unnecessary boilerplate; the `vars:` declaration and skill documentation are the intended contract.
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review/review-structural-integrity.runbook.md:1-22
Timestamp: 2026-04-06T02:43:03.967Z
Learning: In tobyhede/rundown, the rundown variable priority system has frontmatter `vars:` at priority 4 and inherited delegation variables at priority 5. Because priority 4 overrides priority 5, child runbooks that receive variables via parent delegation (e.g., `PlanPath` passed from `review-plan.runbook.md`) must NOT declare those variables in their own `vars:` frontmatter block — doing so would shadow/override the delegated value with the default. Omitting `vars:` declarations for inherited delegation variables in child runbooks is intentional and correct. Do not flag missing `vars:` declarations for inherited variables as a documentation gap in future reviews of files under `packages/claude-code-plugin/runbooks/planning/review/`.
📚 Learning: 2026-04-06T03:16:01.196Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review/review-structural-integrity.runbook.md:18-18
Timestamp: 2026-04-06T03:16:01.196Z
Learning: In `packages/claude-code-plugin/runbooks/planning/review/` runbooks (e.g., `review-structural-integrity.runbook.md`), substep headings use intentionally terse noun-phrase identifiers (e.g., "Step ordering logical", "No circular dependencies", "Clear completion criteria") rather than full grammatical sentences. Do not flag these as grammar issues — this is a deliberate, consistent style across all sibling substep headings in these review runbooks.

Applied to files:

  • docs/FORMAT.md
  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-27T06:40:40.803Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 210
File: packages/claude-code-plugin/runbooks/meta/end-to-end-test.runbook.md:27-31
Timestamp: 2026-04-27T06:40:40.803Z
Learning: In tobyhede/rundown `*.runbook.md` files, a runbook-list entry (e.g., `- planning/review-plan.runbook.md`) in a step WITHOUT a `- DELEGATE` directive is an intentional inline linkage pattern: the parent runbook walks the referenced runbook in-session as an implicit substep (per SPEC §3.2). This is distinct from a step WITH `- DELEGATE`, which dispatches an out-of-process subagent. Both are valid runbook-list patterns with different execution boundaries. Do NOT flag the absence of `- DELEGATE` on a runbook-list step as a missing directive — it is a deliberate choice between in-session (inline) and out-of-process (delegate) execution.

Applied to files:

  • docs/FORMAT.md
  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T03:16:01.394Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review/review-technical-accuracy.runbook.md:48-54
Timestamp: 2026-04-06T03:16:01.394Z
Learning: In tobyhede/rundown runbook markdown files (e.g., `*.runbook.md` under `packages/claude-code-plugin/runbooks/`), the final step of a runbook does NOT require an explicit execution directive (such as `- DEFER`) because it relies on default terminal behavior. Do not flag missing `- DEFER` or transition markers on a runbook's last step — it is intentionally omitted and executes correctly via implicit terminal semantics.

Applied to files:

  • docs/FORMAT.md
  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T04:20:08.732Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/write-plan.runbook.md:94-97
Timestamp: 2026-04-06T04:20:08.732Z
Learning: In tobyhede/rundown `.runbook.md` files, a blank line between a step heading (e.g., `## 10. Verify Plan Structure`) and its transition directives (e.g., `- PASS COMPLETE`, `- FAIL GOTO 8`) is cosmetic only. The Rundown parser correctly parses the control-flow regardless of the blank line. Do NOT flag blank lines between headings and transition directives as a potential parsing or control-flow issue — `rd check` validates steps correctly and scenario tests confirm the expected routing behavior.

Applied to files:

  • docs/FORMAT.md
  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T03:16:03.975Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/write-plan.runbook.md:11-11
Timestamp: 2026-04-06T03:16:03.975Z
Learning: In tobyhede/rundown `.runbook.md` files, the list items immediately following a step heading (e.g., `- PASS CONTINUE`, `- FAIL STOP`, `- FAIL GOTO N`, `- PASS COMPLETE`) are Rundown spec transition/control-flow directives that must appear directly after the heading with no blank line. Do NOT flag these as markdownlint MD022 (blanks-around-headings) violations — they are not standard Markdown prose lists and the blank-line requirement does not apply to them in runbook files.

Applied to files:

  • docs/FORMAT.md
  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-03-15T08:52:14.181Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 109
File: docs/FORMAT.md:19-19
Timestamp: 2026-03-15T08:52:14.181Z
Learning: Document that the ws lexical rule is a general definition (space or tab) while individual productions may restrict to spaces only. When reviewing docs and related code, ensure this nuance is clearly stated (e.g., in docs/FORMAT.md and related code comments), and reference the relevant code paths and tests (e.g., parser helpers and tests around PASS usage and tab handling). Prefer explicit notes over implying universal tab support, and consider adding automated checks or CI validation to enforce consistency between the lexical rule and production-specific behavior.

Applied to files:

  • docs/FORMAT.md
📚 Learning: 2026-03-31T01:30:36.008Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 166
File: packages/claude-code-plugin/skills/writing-runbooks/SKILL.md:140-140
Timestamp: 2026-03-31T01:30:36.008Z
Learning: In this repository, when writing Handlebars templates in Markdown, spaced and unspaced variable forms are both valid. Do not treat `{{ item }}` (with whitespace around the variable name) as a style violation; it is intentionally supported and is used in documentation for readability. Only flag Handlebars syntax issues if they are syntactically invalid beyond whitespace (e.g., malformed braces or invalid expression).

Applied to files:

  • docs/FORMAT.md
  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T02:43:03.967Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review/review-structural-integrity.runbook.md:1-22
Timestamp: 2026-04-06T02:43:03.967Z
Learning: In tobyhede/rundown, the rundown variable priority system has frontmatter `vars:` at priority 4 and inherited delegation variables at priority 5. Because priority 4 overrides priority 5, child runbooks that receive variables via parent delegation (e.g., `PlanPath` passed from `review-plan.runbook.md`) must NOT declare those variables in their own `vars:` frontmatter block — doing so would shadow/override the delegated value with the default. Omitting `vars:` declarations for inherited delegation variables in child runbooks is intentional and correct. Do not flag missing `vars:` declarations for inherited variables as a documentation gap in future reviews of files under `packages/claude-code-plugin/runbooks/planning/review/`.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T02:42:58.905Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review/review-build-runtime.runbook.md:1-22
Timestamp: 2026-04-06T02:42:58.905Z
Learning: In tobyhede/rundown, runbook frontmatter `vars:` declarations carry variable priority 4, which overrides inherited delegation variables at priority 5. Child runbooks that rely on `PlanPath` (or any variable) being passed down from a parent via delegation must NOT declare that variable in their own `vars:` frontmatter — doing so would shadow the parent's value with the default (typically empty string). Omitting the `vars:` entry is the correct pattern to enable delegation inheritance. This applies to all review sub-runbooks under `packages/claude-code-plugin/runbooks/planning/review/`.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T02:43:17.509Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/meta/end-to-end-test.runbook.md:8-18
Timestamp: 2026-04-06T02:43:17.509Z
Learning: In `tobyhede/rundown` runbooks (e.g., `packages/claude-code-plugin/runbooks/meta/end-to-end-test.runbook.md`), empty or unset `vars:` values are intentionally left without shell-level validation guards. By design, undefined/empty template variables are preserved as literal `{{ VariableName }}` text, which produces a clear error when the step attempts to resolve the runbook reference or command. Adding input-guard steps to every runbook that accepts variables is considered unnecessary boilerplate; the `vars:` declaration and skill documentation are the intended contract.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T02:43:16.222Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review-plan.runbook.md:7-28
Timestamp: 2026-04-06T02:43:16.222Z
Learning: In tobyhede/rundown, runbook template variables (e.g., `{{ PlanPath }}`, `{{ TargetRunbook }}`) that are not supplied at invocation time are preserved as literal text per spec. The first step that reads the unresolved variable will fail with a clear error, so adding explicit upfront validation guards (e.g., `test -n "{{ PlanPath }}"`) is considered unnecessary boilerplate without meaningful UX improvement. Do not flag missing validation guards for required runbook variables in future reviews.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T02:43:13.971Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/write-plan.runbook.md:68-91
Timestamp: 2026-04-06T02:43:13.971Z
Learning: In tobyhede/rundown, `write-plan.runbook.md` and `review-plan.runbook.md` under `packages/claude-code-plugin/runbooks/planning/` are intentionally separate runbooks. `write-plan` creates the plan; `review-plan` validates it. They are composed at a higher orchestration level (e.g., `meta/end-to-end-test.runbook.md` or manual invocation with `--var PlanPath=...`). Do NOT flag the absence of a direct chain between these two runbooks as a workflow gap — coupling them would reduce flexibility by design.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-20T07:26:57.555Z
Learnt from: CR
Repo: tobyhede/rundown PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-04-20T07:26:57.555Z
Learning: Runbooks are discovered from multiple sources with priority: Project (`.rundown/runbooks/`) → Plugin (`$CLAUDE_PLUGIN_ROOT/runbooks/`) → Bundled (CLI package `dist/runbooks/`). Use `namespace:name` syntax for explicit source targeting (e.g., `rundown:write-plan` for plugin namespace).

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T03:16:22.299Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review-plan.runbook.md:36-40
Timestamp: 2026-04-06T03:16:22.299Z
Learning: In tobyhede/rundown (`packages/cli/src/helpers/resolve-runbook.ts`), `resolveRunbookFile` performs recursive subdirectory scanning within each source root (project at `.claude/rundown/runbooks/`, plugin at `$CLAUDE_PLUGIN_ROOT/runbooks/`, and bundled). A bare filename like `review-technical-accuracy.runbook.md` or `retry-success.runbook.md` will resolve correctly even when the actual file lives in a subdirectory (e.g., `review/` or `retries/`). Do NOT flag bare runbook filename references in runbook delegate lists as broken paths requiring a subdirectory prefix — name-based discovery handles this transparently.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T03:16:01.068Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/runbooks/planning/review/review-risk-safety.runbook.md:66-72
Timestamp: 2026-04-06T03:16:01.068Z
Learning: In tobyhede/rundown, the final "Write findings" step in planning review sub-runbooks (e.g., `review-risk-safety.runbook.md`, `review-technical-accuracy.runbook.md`, `review-structural-integrity.runbook.md`, `review-build-runtime.runbook.md` under `packages/claude-code-plugin/runbooks/planning/review/`) intentionally omits a `- DEFER` directive. It is the terminal step and uses the default `PASS COMPLETE / FAIL STOP` semantics to propagate the child runbook's outcome to the parent. Do NOT flag the absence of `- DEFER` on these terminal "Write findings" steps as a missing execution directive — adding `- DEFER` would incorrectly change them from terminating steps to mid-flow deferred steps.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-07T22:53:56.381Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 187
File: packages/claude-code-plugin/runbooks/planning/review/review-build-runtime.runbook.md:29-31
Timestamp: 2026-04-07T22:53:56.381Z
Learning: In tobyhede/rundown, the `PASS COMPLETE` on Step 3 of the review sub-runbooks (`review-build-runtime.runbook.md`, `review-risk-safety.runbook.md`, `review-structural-integrity.runbook.md`, `review-technical-accuracy.runbook.md`) is intentional design. When a review PASS completes (no issues found), no JSON artifact is written — absence of the output file is the implicit "ok" signal. `review-synthesize.runbook.md` is designed to collate only the artifacts that exist, so "ok" reviews that produce no file are correctly and intentionally excluded. Do NOT flag `PASS COMPLETE` before the write step in these runbooks as a control-flow bug.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
📚 Learning: 2026-04-06T02:43:17.379Z
Learnt from: tobyhede
Repo: tobyhede/rundown PR: 177
File: packages/claude-code-plugin/skills/writing-plans/SKILL.md:130-130
Timestamp: 2026-04-06T02:43:17.379Z
Learning: In Rundown `SKILL.md` task definitions for this repo, the `commit` object (including its `files` and `message` sub-keys) is the canonical, schema-compliant representation of staged changes and a commit. The `rdx` tool renders this structured `commit` into `git add`/`git commit` commands at execution time. Therefore, during code review, do not flag an example task definition as missing explicit bash `git add`/`git commit` subtasks when the task uses the `commit` object.

Applied to files:

  • packages/claude-code-plugin/skills/writing-runbooks/SKILL.md
🔇 Additional comments (2)
docs/FORMAT.md (1)

66-66: Good clarifications on key casing and duplicate OUTPUTS rejection.

These statements make parsing behavior and validation constraints explicit and reduce ambiguity for runbook authors.

Also applies to: 107-107

packages/claude-code-plugin/skills/writing-runbooks/SKILL.md (1)

145-151: LGTM — value-source and precedence guidance is clear and consistent.

The updated INPUTS/REQUIRED semantics, missing-required behavior, and source-precedence notes are coherent and materially improve authoring correctness.

Also applies to: 240-242, 251-251

Comment thread docs/FORMAT.md
Comment on lines +59 to +63
inline_sequence ::= "[" variable_name ( "," variable_name )* "]"
output_fm_list ::= ( ws "- " quoted_output_entry newline
| ws "- " output_entry newline )+
inline_output_sequence ::= "[" ( output_sequence_entry ( "," output_sequence_entry )* )? "]"
output_sequence_entry ::= output_entry | quoted_output_entry
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Allow optional whitespace in inline frontmatter sequences.

The new inline grammar currently excludes common YAML inline forms with spaced commas (e.g., [PlanPath, environment]). Please add optional whitespace around separators/items so the grammar matches practical authoring and parser behavior.

Suggested grammar tweak
-inline_sequence ::= "[" variable_name ( "," variable_name )* "]"
+inline_sequence ::= "[" ws? variable_name ( ws? "," ws? variable_name )* ws? "]"

-inline_output_sequence ::= "[" ( output_sequence_entry ( "," output_sequence_entry )* )? "]"
+inline_output_sequence ::= "[" ws? ( output_sequence_entry ( ws? "," ws? output_sequence_entry )* )? ws? "]"
As per coding guidelines: `docs/**/*.md`: “Accuracy against current CLI behavior and public Rundown specification.”
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/FORMAT.md` around lines 59 - 63, The inline grammar currently disallows
spaces around commas and inside brackets; update inline_sequence and
inline_output_sequence to accept optional whitespace around separators and at
the bracket boundaries. Specifically, change inline_sequence (symbol
inline_sequence) to allow optional ws before/after each comma and optional ws
after the opening "[" and before the closing "]", and change
inline_output_sequence (symbol inline_output_sequence) similarly so the pattern
becomes "[" ws? variable_name ( ws? "," ws? variable_name )* ws? "]" and "[" ws?
( output_sequence_entry ( ws? "," ws? output_sequence_entry )* )? ws? "]"
respectively, leaving output_sequence_entry, output_entry, and
quoted_output_entry unchanged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant