Skip to content

Decouple cross-workflow artifact dependencies and publish clarifications - #100

Merged
adalton merged 10 commits into
mainfrom
andalton/decouple-workflow-artifacts
Aug 7, 2026
Merged

Decouple cross-workflow artifact dependencies and publish clarifications#100
adalton merged 10 commits into
mainfrom
andalton/decouple-workflow-artifacts

Conversation

@adalton

@adalton adalton commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Enforce artifact isolation: .artifacts/{workflow-name}/ is private state; workflows never read another workflow's artifacts
  • Move config.json to .artifacts/config.json (workspace-level, not prd-owned)
  • Design workflow reads PRD/clarifications from the docs repo, not .artifacts/prd/
  • Feature sizing reads from Jira directly, not local artifacts
  • Publish clarifications.md alongside prd.md so [Clarify: R1.Q2] tags are durable
  • Restructure clarification log format for human readability
  • Document artifact isolation as constraint Add feedback skill and enrich unattended pipeline #7 in AGENTS.md

Motivation

Different people run different workflows on different machines. We cannot assume that private artifacts from /prd are available to someone running /design — they may be a different person on a different computer. .artifacts/{workflow-name}/ must be treated as each workflow's private state.

Auditing the current state revealed that the design workflow had substantial coupling to prd's .artifacts/ directory — reading the PRD, clarifications, requirements, and publish metadata directly from another workflow's private state. This change eliminates that coupling. As part of the fix, clarifications are now published alongside the PRD in the docs repo so that [Clarify: R1.Q2] tags reference a durable, published artifact rather than local session state.

Changes by category

Config.json move (12 files): .artifacts/prd/config.json.artifacts/config.json across prd, design, implement, e2e

Design decoupling (8 files): Design finds the PRD by searching the docs repo for the issue key. Clarifications read from docs repo sibling. Sizing from Jira. No .artifacts/prd/ or .artifacts/sizing/ reads.

Clarifications publishing (1 file): prd/skills/publish.md copies 02-clarifications.mdclarifications.md alongside the PRD

Clarification format (1 file): prd/skills/clarify.md restructured for human readability — Answer/Impact/Decision as #### headings, decisions inline with Q&A entries as #### Decision (D{N})

Documentation (1 file): AGENTS.md constraint #7

Version bumps: design 0.8.0, prd 0.8.0, implement 0.6.0, e2e 0.5.0

Test plan

  • Verify grep -rn "\.artifacts/prd" --include="*.md" design/ implement/ e2e/ returns only the instructional "do not read from" line
  • Verify grep -rn "\.artifacts/sizing" --include="*.md" design/ returns zero results
  • Verify grep -rn "\.artifacts/prd/config" --include="*.md" returns zero results
  • Run a /prd workflow end-to-end and verify clarifications.md is published alongside prd.md
  • Run a /design workflow and verify it finds the PRD from the docs repo without local prd artifacts

Assisted-by: Claude noreply@anthropic.com

Summary

  • PRD workflow: Uses workspace-level .artifacts/config.json. Publishes 02-clarifications.md with prd.md. Uses structured Q&A entries with inline decision records.
  • Design workflow: Reads published PRDs and co-located clarifications from the documentation repository. Records resolved paths in 01-context.md. Reads feature sizing from Jira. Removes local artifact fallbacks.
  • E2E and implement workflows: Use workspace-level .artifacts/config.json. Validate the configured remote. Persist corrected configuration with absolute paths.
  • Guidelines and conventions: Adds artifact isolation under .artifacts/{workflow-name}/. Limits cross-workflow sharing to Jira, published documentation, and .artifacts/config.json.
  • Versions: Updates design and PRD to 0.8.0, implement to 0.6.0, and E2E to 0.5.0.
  • Shared resources: No _shared/ files changed. The workflows now use shared configuration, published-document discovery, and artifact-isolation conventions.

Enforce the principle that .artifacts/{workflow-name}/ is each workflow's
private state by eliminating all cross-workflow artifact reads.

- Move config.json from .artifacts/prd/config.json to .artifacts/config.json
  (workspace-level config, not owned by any workflow)
- Design workflow reads PRD and clarifications from the docs repo instead
  of .artifacts/prd/ — finds PRD by searching for the issue key
- Feature sizing in decompose reads from Jira directly instead of
  .artifacts/prd/ or .artifacts/sizing/
- Eliminate design's read of prd's publish-metadata.json — derive
  release/feature from the docs repo directory structure
- Publish clarifications.md alongside prd.md in the docs repo so
  [Clarify: R1.Q2] tags reference a durable, published artifact
- Restructure clarification log format for human readability: Answer,
  Impact, and Decision as separate headings instead of bold-inline;
  locked decisions inline with their Q&A entry as #### Decision (D{N})
- Document artifact isolation as constraint #7 in AGENTS.md

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>
@adalton adalton self-assigned this Aug 6, 2026
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Workflows now isolate artifacts and share workspace-level documentation repository configuration. PRD publication supports structured clarification records. Design ingestion resolves published PRDs and propagates their paths through later design stages.

Changes

Workflow structure and published inputs

Layer / File(s) Summary
Shared configuration and artifact boundaries
AGENTS.md, design/skills/controller.md, design/skills/publish.md, e2e/skills/ingest.md, implement/skills/ingest.md, prd/{GUIDE.md,SKILL.md}, prd/skills/{controller,publish,respond,revise}.md, design/skills/{sync,respond,revise}.md, {design,e2e,implement}/SKILL.md
Workflows now use .artifacts/config.json, define artifact isolation, validate repository paths and remotes, and update related skill versions.
PRD clarification and publication records
prd/skills/clarify.md, prd/skills/publish.md, prd/skills/respond.md
Clarifications now use structured per-question fields and sequential decision headings. Publication optionally commits 02-clarifications.md with the PRD.
Published PRD discovery and design context
design/README.md, design/skills/ingest.md, design/skills/publish.md
Design ingestion searches the configured documentation repository, handles missing or ambiguous matches, loads co-located clarifications, and records resolved paths.
Design context consumers and sizing
design/skills/{decompose,draft,research,respond,revise}.md
Design stages use paths recorded in 01-context.md. Feature sizing reads Jira Size or Story Points values.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

Suggested labels: workflow-structure

Suggested reviewers: eranco74, amir-yogev-gh

🚥 Pre-merge checks | ✅ 11 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Step-Sequencing ⚠️ Warning implement and e2e ingest use independent 5a–5c and e2e 6a–6j sections, not conditional branches; these violate the sub-step rule. Promote independent phases to sequential main steps and consolidate to no more than 10; retain lettered sub-steps only for explicit conditional branches.
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: isolating cross-workflow artifacts and publishing clarifications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Ai-Attribution ✅ Passed AI use is disclosed as “Assisted-by: Claude” in the PR and all 10 PR commits; no Co-Authored-By trailer appears in the PR commit range.
No-Absolute-Paths-In-Skills ✅ Passed The scan found only two /home/ matches; both are fenced JSON examples using the explicitly exempt /home/user/ placeholder, and no PR-added absolute paths were found.
Skill-Md-Under-30-Lines ✅ Passed All changed SKILL.md files are under 30 lines: design 28, e2e 26, implement 25, and prd 26, including frontmatter.
Command-Colon-Notation ✅ Passed All 75 tracked files under commands/ have frontmatter names matching exactly {parent workflow}:{command filename}; no missing or nonconforming names were found.
No-Orphaned-References ✅ Passed All affected workflows reference every existing command and skill; all controller phases resolve, and repository-local links resolve. Remaining paths are generated artifacts or docs-repository outp...
No-Content-Duplication ✅ Passed Changed SKILL.md files only bump versions; changed controllers add config guidance. Exact paragraph/line and normalized substantial-overlap checks found no duplicated instruction blocks within any...
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch andalton/decouple-workflow-artifacts

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 9

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@AGENTS.md`:
- Line 88: Align the cross-workflow artifact boundary in AGENTS.md:88 by adding
clarifications.md to the permitted published-docs interfaces or making the
parenthetical list explicitly illustrative. In prd/GUIDE.md:90, remove guidance
allowing downstream workflows to read .artifacts/prd/{issue-key}/ directly and
direct them to the corresponding published docs repository copies instead.

In `@design/SKILL.md`:
- Line 3: Update the command path reference in SKILL.md so it no longer uses the
unresolved commands/{command}.md placeholder; replace it with concrete existing
command file paths or move the placeholder outside the file-path reference.

In `@design/skills/decompose.md`:
- Around line 352-354: Update the Feature sizing step in the Jira lookup
instructions to distinguish a successful read with both Size and Story Points
unset from authentication, network, or lookup failures. Skip the sizing check
only after confirming the Feature issue was retrieved successfully and both
fields are absent; otherwise stop and report the external lookup failure.
Document missing prerequisites and unavailable-tool failure modes as required by
the path instructions.
- Line 37: Reduce the main workflow in the decompose skill from Steps 1–14 to at
most 10 sequentially numbered steps. Move review, re-review, validation, and
reporting into a companion skill or combine related phases, while preserving the
existing PRD path guidance in the PRD step.

In `@design/skills/ingest.md`:
- Around line 70-82: Validate every PRD directory before using it: in
design/skills/ingest.md lines 70-82, require a readable prd.md in each directory
match and restrict any user-provided fallback path to the validated
docs_repo_path; in design/skills/publish.md lines 85-106, require prd.md and the
expected {release}/{feature} directory structure before deriving defaults.
- Around line 64-66: Update the configuration-loading step in the ingest
workflow to validate existing .artifacts/config.json values before use, applying
the checks from publish.md: confirm docs_repo_path exists, is a Git repository,
and has a remote matching docs_repo_remote. If validation fails, stop and ask
the user for corrected path and remote values; preserve the existing
prompt-and-write flow when the configuration is absent.

In `@design/skills/research.md`:
- Around line 69-71: Handle the “None published” sentinel consistently before
consuming clarification artifacts: in design/skills/research.md lines 69-71,
skip the clarification read when the PRD Summary path is “None published,”
otherwise read the recorded path; apply the same sentinel check before loading
locked decisions in design/skills/revise.md lines 40-41 and before validating
locked decisions in design/skills/respond.md lines 133-138. Keep the existing
behavior for actual clarification paths unchanged.

In `@prd/skills/controller.md`:
- Around line 54-55: Align the shared configuration lifecycle across all
affected documentation: in prd/skills/controller.md lines 54-55, state that
eligible /ingest and /publish phases may create .artifacts/config.json while
later phases validate and reuse it; in design/skills/sync.md lines 639-643,
require prompting for or creating missing configuration when publish metadata
and a local testplan exist instead of silently skipping; in prd/skills/revise.md
lines 81-85, apply the same missing-configuration handling and define migration
or compatibility behavior for legacy .artifacts/prd/config.json.

In `@prd/skills/publish.md`:
- Around line 153-162: Update the publication workflow around the
clarification-file copy to run the repository-configured Vale validation against
both 03-prd.md and 02-clarifications.md first; if validation fails, stop before
copying or staging either file. Preserve the existing cp and git add behavior
only after both files pass validation.
🪄 Autofix

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: Enterprise

Run ID: a29df7ff-a371-4f25-a700-af2d8c98a5b7

📥 Commits

Reviewing files that changed from the base of the PR and between 782b906 and 07d2717.

📒 Files selected for processing (23)
  • AGENTS.md
  • design/README.md
  • design/SKILL.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/draft.md
  • design/skills/ingest.md
  • design/skills/publish.md
  • design/skills/research.md
  • design/skills/respond.md
  • design/skills/revise.md
  • design/skills/sync.md
  • e2e/SKILL.md
  • e2e/skills/ingest.md
  • implement/SKILL.md
  • implement/skills/ingest.md
  • prd/GUIDE.md
  • prd/SKILL.md
  • prd/skills/clarify.md
  • prd/skills/controller.md
  • prd/skills/publish.md
  • prd/skills/respond.md
  • prd/skills/revise.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (8)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • design/SKILL.md
  • prd/SKILL.md
  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • implement/SKILL.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • e2e/SKILL.md
  • prd/skills/publish.md
  • prd/skills/respond.md
**/{SKILL.md,guidelines.md,controller.md}

📄 CodeRabbit inference engine (Custom checks)

When any of SKILL.md, guidelines.md, or controller.md in a workflow is changed, compare it against whichever of the other two files are present and check for verbatim duplication of multi-line instruction blocks or paragraphs. Each has a distinct role: SKILL.md is the thin entry point, guidelines.md holds principles/limits/safety/quality/escalation, controller.md manages phase dispatch. Phase names and brief one-line descriptions appearing in multiple files is EXPECTED (cross-referencing, not duplication) — only flag substantial blocks of identical prose or step-by-step instructions that are copied between files.

Files:

  • design/SKILL.md
  • prd/SKILL.md
  • prd/skills/controller.md
  • design/skills/controller.md
  • implement/SKILL.md
  • e2e/SKILL.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

**/*.md: Workflow file references must use relative paths for symlink compatibility.
Workflow content must use plain Markdown and contain no IDE-specific syntax.

Files:

  • design/SKILL.md
  • prd/SKILL.md
  • AGENTS.md
  • prd/skills/controller.md
  • design/README.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • prd/GUIDE.md
  • implement/SKILL.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • e2e/SKILL.md
  • prd/skills/publish.md
  • prd/skills/respond.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • design/SKILL.md
  • prd/SKILL.md
  • AGENTS.md
  • prd/skills/controller.md
  • design/README.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • prd/GUIDE.md
  • implement/SKILL.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • e2e/SKILL.md
  • prd/skills/publish.md
  • prd/skills/respond.md
**/SKILL.md

📄 CodeRabbit inference engine (Custom checks)

For any SKILL.md file changed in this PR, verify it is under 30 lines total (including frontmatter). SKILL.md must be thin entry points using progressive disclosure. If a SKILL.md exceeds 30 lines, flag it with the count and suggest moving content to guidelines.md or skills/ files.

**/SKILL.md: Every workflow directory must contain a SKILL.md entry point with YAML frontmatter; keep SKILL.md under 30 lines and reference guidelines.md and, when applicable, skills/controller.md using relative paths.
When behavioral workflow files change, update the corresponding workflow SKILL.md version using semver: PATCH for wording or formatting changes, MINOR for behavioral or phase changes, and MAJOR for removed or renamed phases or commands.

Files:

  • design/SKILL.md
  • prd/SKILL.md
  • implement/SKILL.md
  • e2e/SKILL.md

⚙️ CodeRabbit configuration file

**/SKILL.md: SKILL.md review (ai-workflows conventions):

  • YAML frontmatter required: opening/closing --- delimiters
  • Required fields: name (lowercase, hyphens only, max 64 chars),
    description (third person, includes trigger terms and
    activated-by commands)
  • Total file length must be under 30 lines (progressive
    disclosure rule — details belong in guidelines.md or skills/)
  • Must reference guidelines.md for principles/limits/safety/quality
  • Must NOT duplicate content from guidelines.md or controller.md
  • Should list all phases with references to skills/ or commands/
  • No IDE-specific syntax — plain markdown only
  • Verify every file path reference resolves to an existing file

Files:

  • design/SKILL.md
  • prd/SKILL.md
  • implement/SKILL.md
  • e2e/SKILL.md
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: All significant workflow outputs must be persisted under .artifacts/{workflow-name}/{context}/.
Workflows must isolate artifact state: each workflow may only read from and write to its own .artifacts/{workflow-name}/ directory, except for the documented shared interfaces.
Include behavioral-file version bumps in the same commit as the behavioral change; do not create a separate version-bump commit.
Before destructive Git operations, verify the repository state with git status.
Before creating a PR or MR, confirm the branch and base before pushing.
Only cve-fix /close, design /sync, and sizing /apply may write to Jira, and each requires explicit approval.
Run Vale validation before applying documentation changes to repository files.

Files:

  • design/SKILL.md
  • prd/SKILL.md
  • AGENTS.md
  • prd/skills/controller.md
  • design/README.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • prd/GUIDE.md
  • implement/SKILL.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • e2e/SKILL.md
  • prd/skills/publish.md
  • prd/skills/respond.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

Workflows must not auto-advance in attended mode; they must wait for user input between phases unless an explicit unattended mode is documented.

Files:

  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • prd/skills/publish.md
  • prd/skills/respond.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • prd/skills/publish.md
  • prd/skills/respond.md
**/skills/controller.md

📄 CodeRabbit inference engine (AGENTS.md)

Controllers must reference sibling skills using phase-name.md, not skills/phase-name.md.

Files:

  • prd/skills/controller.md
  • design/skills/controller.md
*/README.md

⚙️ CodeRabbit configuration file

*/README.md: Workflow README review (ai-workflows conventions):

  • Must document .artifacts/ output path for the workflow
  • Phase descriptions must match what SKILL.md and skills/
    actually implement — flag any documentation drift
  • Features mentioned in README must exist in the skill files;
    features implemented in skills must be documented in README
  • Prerequisites (required tools, environment, integrations)
    must be listed
  • Usage examples should show actual command invocations
    (e.g., /workflow:phase)

Files:

  • design/README.md
🧠 Learnings (14)
📚 Learning: 2026-06-15T15:50:50.503Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 64
File: skill-reviewer/SKILL.md:3-3
Timestamp: 2026-06-15T15:50:50.503Z
Learning: In flightctl/ai-workflows, treat `SKILL.md` as a size-constrained document: keep it at or under 30 lines. If a `SKILL.md` already exceeds 30 lines but was not changed by the current PR (a known pre-existing issue), don’t require fixing it as part of the PR. If the PR does modify a too-long `SKILL.md`, refactor it into a thin entry point (e.g., move bulk content to smaller companion docs and leave only a brief overview/links) so the `SKILL.md` itself stays within the 30-line limit.

Applied to files:

  • design/SKILL.md
  • prd/SKILL.md
  • implement/SKILL.md
  • e2e/SKILL.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • design/SKILL.md
  • prd/SKILL.md
  • AGENTS.md
  • prd/skills/controller.md
  • design/README.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • prd/GUIDE.md
  • implement/SKILL.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • e2e/SKILL.md
  • prd/skills/publish.md
  • prd/skills/respond.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • design/SKILL.md
  • prd/SKILL.md
  • AGENTS.md
  • prd/skills/controller.md
  • design/README.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • prd/GUIDE.md
  • implement/SKILL.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • e2e/SKILL.md
  • prd/skills/publish.md
  • prd/skills/respond.md
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • prd/skills/publish.md
  • prd/skills/respond.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • prd/skills/publish.md
  • prd/skills/respond.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • prd/skills/publish.md
  • prd/skills/respond.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • e2e/skills/ingest.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • implement/skills/ingest.md
  • prd/skills/clarify.md
  • prd/skills/publish.md
  • prd/skills/respond.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • prd/skills/controller.md
  • prd/skills/revise.md
  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
  • prd/skills/clarify.md
  • prd/skills/publish.md
  • prd/skills/respond.md
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/controller.md
  • design/skills/decompose.md
  • design/skills/respond.md
  • design/skills/ingest.md
  • design/skills/revise.md
  • design/skills/draft.md
  • design/skills/research.md
  • design/skills/sync.md
  • design/skills/publish.md
📚 Learning: 2026-04-27T16:15:33.140Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 32
File: design/skills/research.md:68-70
Timestamp: 2026-04-27T16:15:33.140Z
Learning: In flightctl/ai-workflows, the `design` workflow phases `/research` and `/draft` are intended to be started “from scratch.” During these phases, it is expected that the code reads both `.artifacts/design/{issue-number}/01-context.md` (for architectural orientation) AND the full PRD artifacts `.artifacts/prd/{issue-number}/03-prd.md` and `.artifacts/prd/{issue-number}/02-clarifications.md` to capture complete requirement detail and locked decisions. Only later phases that refine existing design artifacts (e.g., `/revise`) should rely on `01-context.md` as the authoritative requirement bridge and avoid re-reading the full PRD. Therefore, do not flag direct PRD reads as a policy mismatch specifically in `/research` or `/draft`.

Applied to files:

  • design/skills/draft.md
  • design/skills/research.md
🪛 LanguageTool
AGENTS.md

[grammar] ~88-~88: Please add a punctuation mark at the end of paragraph.
Context: ... testplans), and workspace-level config at .artifacts/config.json ## Workflow V...

(PUNCTUATION_PARAGRAPH_END)

design/skills/draft.md

[style] ~145-~145: Consider using the typographical ellipsis character here instead.
Context: ... functional requirement (FR-1, FR-2, ...) and non-functional requirement (NFR-1,...

(ELLIPSIS)


[style] ~146-~146: Consider using the typographical ellipsis character here instead.
Context: ...unctional requirement (NFR-1, NFR-2, ...), confirm it is addressed in the design...

(ELLIPSIS)

design/skills/publish.md

[style] ~101-~101: This word has been used in one of the immediately preceding sentences. Using a synonym could make your text more interesting to read, unless the repetition is intentional.
Context: ...6-Q2). If a PRD directory was found, propose the extracted release` value as the ...

(EN_REPEATEDWORDS_PROPOSE)


[style] ~105-~105: This word has been used in one of the immediately preceding sentences. Using a synonym could make your text more interesting to read, unless the repetition is intentional.
Context: ...1471). If a PRD directory was found, propose the extracted feature` value as the ...

(EN_REPEATEDWORDS_PROPOSE)


[style] ~106-~106: This word has been used in one of the immediately preceding sentences. Using a synonym could make your text more interesting to read, unless the repetition is intentional.
Context: ...ure` value as the default. Otherwise, suggest a slug derived from the Jira issue summ...

(EN_REPEATEDWORDS_SUGGEST)

prd/skills/clarify.md

[style] ~113-~113: Since ownership is already implied, this phrasing may be redundant.
Context: ...h field (Answer, Impact, Decision) gets its own heading. Never collapse multiple fields...

(PRP_OWN)


[style] ~179-~179: Consider using the typographical ellipsis character here instead.
Context: ...sequentially across all rounds (D1, D2, ... D{N}) ### Step 5: Check Exit Criteria ...

(ELLIPSIS)

🔇 Additional comments (16)
design/skills/controller.md (1)

69-74: LGTM!

e2e/skills/ingest.md (1)

101-103: LGTM!

Also applies to: 118-119

implement/SKILL.md (1)

3-3: LGTM!

implement/skills/ingest.md (1)

92-94: LGTM!

Also applies to: 109-110

e2e/SKILL.md (1)

3-3: LGTM!

prd/SKILL.md (1)

3-3: LGTM!

prd/skills/clarify.md (1)

102-114: LGTM!

Also applies to: 127-180

prd/skills/publish.md (1)

34-34: LGTM!

Also applies to: 54-54, 164-171, 205-205, 239-242

prd/skills/respond.md (1)

37-37: LGTM!

Also applies to: 125-128, 199-199

design/skills/respond.md (1)

37-37: LGTM!

design/skills/revise.md (1)

114-115: LGTM!

Also applies to: 167-167

design/README.md (1)

48-48: LGTM!

design/skills/ingest.md (1)

157-157: LGTM!

design/skills/publish.md (1)

34-34: LGTM!

Also applies to: 54-54, 310-310

design/skills/decompose.md (1)

682-682: LGTM!

design/skills/draft.md (1)

41-43: LGTM!

Also applies to: 144-152

Comment thread AGENTS.md
Comment thread design/SKILL.md
Comment thread design/skills/decompose.md
Comment thread design/skills/decompose.md Outdated
Comment thread design/skills/ingest.md Outdated
Comment thread design/skills/ingest.md Outdated
Comment thread design/skills/research.md
Comment thread prd/skills/controller.md
Comment thread prd/skills/publish.md
…presence

- design/skills/ingest.md: Validate existing .artifacts/config.json before
  use (path exists, is git repo, remote matches) — same checks as publish
- design/skills/ingest.md: Filter find matches to directories containing
  prd.md before using them
- design/skills/decompose.md: Distinguish Jira lookup failures from unset
  fields in sizing check — report errors, only skip on successful read
  with no size set

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@design/skills/decompose.md`:
- Around line 352-357: Define the Jira sizing contract in the Feature size
lookup step: specify how numeric Story Points map to the T-shirt sizes used by
the epic comparison, including supported ranges and boundary behavior.
Alternatively, require the Size field for this plausibility check and explicitly
state what happens when only Story Points is available; keep the producer and
consumer field names and types consistent.

In `@design/skills/ingest.md`:
- Around line 64-74: Update the existing-config validation flow to persist
corrected docs_repo_path and docs_repo_remote values to .artifacts/config.json
after the user-provided values pass all validation checks, before continuing.
Preserve the current re-prompt behavior for invalid values and keep the same
configuration keys used by later workflows.
🪄 Autofix

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: Enterprise

Run ID: a617eff2-bd69-485a-8c28-379db1d3665a

📥 Commits

Reviewing files that changed from the base of the PR and between 07d2717 and 5484627.

📒 Files selected for processing (2)
  • design/skills/decompose.md
  • design/skills/ingest.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (3)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • design/skills/decompose.md
  • design/skills/ingest.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

**/*.md: Workflow content must use plain Markdown and must not contain IDE-specific syntax.
All file references in workflow Markdown must be relative to the referencing file's location.
Workflows must not auto-advance in attended mode; they must wait for user input between phases unless explicit unattended mode is documented.
Significant workflow outputs must be saved under .artifacts/{workflow-name}/{context}/.
Each workflow's .artifacts/{workflow-name}/ directory is private; other workflows must never read from or write to another workflow's artifact directory.
Before applying documentation changes to repository files, run Vale validation.
Before destructive Git operations, verify with git status; before creating or pushing a PR/MR, confirm the branch and base.
Only cve-fix /close, design /sync, and sizing /apply may write to Jira, and each requires explicit approval.

Files:

  • design/skills/decompose.md
  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • design/skills/decompose.md
  • design/skills/ingest.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

Projects may override workflow phases with .workflows/{workflow}/skills/{phase}.md; controllers must check for and activate this override before the built-in phase skill.

Files:

  • design/skills/decompose.md
  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • design/skills/decompose.md
  • design/skills/ingest.md
🧠 Learnings (12)
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/decompose.md
  • design/skills/ingest.md
🪛 LanguageTool
design/skills/ingest.md

[style] ~73-~73: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...r and re-ask for the correct values. If the config does not exist, ask the us...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🔇 Additional comments (4)
design/skills/ingest.md (3)

92-93: 🗄️ Data Integrity & Integration

Restrict the manual PRD fallback to the validated docs repository.

When discovery finds no match, the workflow asks for a PRD path without requiring that the path is inside docs_repo_path or that it contains prd.md. This bypasses the authoritative published PRD boundary.

Require the fallback path to be inside the validated docs repository. Verify that it is readable and points to prd.md before using it.

As per path instructions, cross-workflow inputs must preserve a consistent file contract.

Source: Path instructions


84-90: LGTM!


97-109: LGTM!

Also applies to: 168-168

design/skills/decompose.md (1)

685-685: LGTM!

Comment thread design/skills/decompose.md
Comment thread design/skills/ingest.md Outdated
adalton added 2 commits August 6, 2026 14:15
prd/skills/controller.md still said config was created by /publish only.
Updated to match design controller: created by whichever workflow's
/publish or /ingest phase runs first.

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>
When existing .artifacts/config.json fails validation, the re-asked
values are now written back to config.json so downstream workflows
don't re-encounter the stale values.

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
design/skills/ingest.md (3)

62-62: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use full step numbers for sequential operations.

3a, 3b, 3c, and 3d are sequential workflow stages. They are not conditional branches. Promote them to numbered steps, or make them unnumbered bullets under Step 3. Update later references such as Step 6a after renumbering.

As per path instructions, sub-steps are allowed only for conditional branches off the parent step.

Also applies to: 77-77, 96-96, 105-105

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@design/skills/ingest.md` at line 62, Renumber the sequential workflow stages
currently labeled 3a, 3b, 3c, and 3d as full numbered steps, or convert them to
unnumbered bullets under Step 3; update all later references, including Step 6a,
to match the revised numbering. Reserve lettered sub-steps only for conditional
branches.

Source: Path instructions


93-94: ⚠️ Potential issue | 🟠 Major

Restrict the no-match fallback to the validated docs repository.

This fallback accepts any user-supplied PRD path. The agent can read .artifacts/prd/... or another repository, which conflicts with the authoritative published PRD rule and the artifact-isolation objective. Require the fallback path to be under docs_repo_path, verify that it is a readable prd.md, and use its co-located clarifications.md only.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@design/skills/ingest.md` around lines 93 - 94, Update the no-match fallback
in the PRD ingestion flow to accept only a user-supplied path under
docs_repo_path; reject paths outside that repository, validate that the target
is a readable prd.md, and load only its co-located clarifications.md.

107-110: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Define the PRD path contract before downstream use.

ingest.md records both paths without specifying their format. Downstream skills consume these values, while the design template requires a relative link to prd.md. Define the stored path format and the conversion to the relative design-document link for both the PRD and clarifications.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@design/skills/ingest.md` around lines 107 - 110, Update the PRD Summary
instructions in ingest.md to define a consistent stored path format for the
resolved PRD and clarifications paths, and specify how each is converted into
the relative link required by the design template. Ensure downstream skills can
consume the stored values directly while the generated design document links to
prd.md and the clarifications file correctly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@design/skills/ingest.md`:
- Line 62: Renumber the sequential workflow stages currently labeled 3a, 3b, 3c,
and 3d as full numbered steps, or convert them to unnumbered bullets under Step
3; update all later references, including Step 6a, to match the revised
numbering. Reserve lettered sub-steps only for conditional branches.
- Around line 93-94: Update the no-match fallback in the PRD ingestion flow to
accept only a user-supplied path under docs_repo_path; reject paths outside that
repository, validate that the target is a readable prd.md, and load only its
co-located clarifications.md.
- Around line 107-110: Update the PRD Summary instructions in ingest.md to
define a consistent stored path format for the resolved PRD and clarifications
paths, and specify how each is converted into the relative link required by the
design template. Ensure downstream skills can consume the stored values directly
while the generated design document links to prd.md and the clarifications file
correctly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 6ec8838b-5c76-41d8-aa70-69b4d63e84eb

📥 Commits

Reviewing files that changed from the base of the PR and between ade24c3 and 728537a.

📒 Files selected for processing (1)
  • design/skills/ingest.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (3)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • design/skills/ingest.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

**/*.md: Workflow content must use plain Markdown without IDE-specific syntax.
All file references in workflow documentation must be relative to the referencing file's location for symlink compatibility.
In attended mode, workflows must not auto-advance between phases unless that workflow explicitly documents unattended mode.
Before applying documentation changes to repository files, run Vale validation.
For commands affecting shared systems, verify git status before destructive Git operations, confirm branch and base before PR/MR pushes, require explicit approval for Jira writes, and run Vale before applying documentation changes.

Files:

  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • design/skills/ingest.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

When a project provides a phase override, the controller must check .workflows/{workflow}/skills/{phase}.md before using the built-in phase skill.

Files:

  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • design/skills/ingest.md
🧠 Learnings (12)
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/ingest.md
🔇 Additional comments (1)
design/skills/ingest.md (1)

59-61: LGTM!

Also applies to: 64-75, 79-92, 98-103, 169-169

3a/3b/3c/3d were sequential operations, not conditional branches.
Converted to unnumbered headings under Step 3 per the project convention
that lettered sub-steps are reserved for conditional branches only.

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>
@adalton

adalton commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai Responding to outside-diff comments from review 4877367524:

Line 62 — sub-step numbering (3a/3b/3c/3d): Fixed in 5bcc40c — converted to unnumbered #### headings under Step 3. They're parts of one logical operation (find and read the PRD), not independent workflow steps, so they stay grouped under Step 3 rather than being promoted to full steps (which would push the file to the 10-step limit).

Lines 93-94 — restrict fallback path to docs repo: No change. When automatic discovery fails, the user provides a path. Restricting it to the docs repo would prevent legitimate cases (user has the PRD in a different location, non-standard docs repo layout, etc.). The human is in the loop — they'll provide a valid path.

Lines 107-110 — define stored path format: No change. The stored path is whatever filesystem path the AI resolved. The design template's [prd.md](prd.md) relative link is hardcoded in the template and works because the design doc is co-located with the PRD in the docs repo — it doesn't depend on the stored path format. The downstream phases read the PRD content from the stored path; they don't construct links from it.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Changed files relevant to the response =='
git diff --name-only origin/main...HEAD | rg '(^|/)(ingest|draft|research|decompose)\.md$|design/README\.md' || true

printf '%s\n' '== Outline: design/skills/ingest.md =='
ast-grep outline design/skills/ingest.md --items all 2>/dev/null || true

printf '%s\n' '== Step 3 and context recording in design/skills/ingest.md =='
rg -n -C 8 'Step 3|3a|3b|3c|3d|fallback|manual|path|01-context\.md|PRD Summary|clarifications' design/skills/ingest.md

printf '%s\n' '== Downstream consumption of recorded PRD and clarifications paths =='
rg -n -C 4 '01-context\.md|PRD path|Clarifications path|PRD Summary|clarifications path' \
  design/skills/draft.md \
  design/skills/research.md \
  design/skills/decompose.md \
  design/skills/revise.md \
  design/skills/respond.md 2>/dev/null || true

printf '%s\n' '== Commit 5bcc40c summary =='
git show --stat --oneline --no-renames 5bcc40c --
git show --format= --no-ext-diff --unified=12 5bcc40c -- design/skills/ingest.md

Length of output: 22616


@adalton The Step 3 heading change in 5bcc40c addresses the sub-step numbering finding. The unnumbered headings keep the operations grouped under Step 3.

I will keep the other two findings open.

  • Fallback path: Step 3 states that the published PRD in the configured docs repository is authoritative. An unrestricted user-provided path can select an unpublished or unrelated PRD. A non-standard layout remains supported if the user provides a path within the configured docs repository.
  • Stored path format: Downstream phases read the recorded path directly, so the design-document link is not the concern. The instruction still does not define how a relative path resolves. Require either an absolute path or a path relative to the workspace root. This makes downstream reads deterministic.

🐇🔎


✏️ Learnings added
Learnt from: adalton
URL: https://github.com/flightctl/ai-workflows/pull/100

Timestamp: 2026-08-06T19:29:10.958Z
Learning: In `design/skills/ingest.md`, the design workflow records the PRD and optional clarifications paths in `.artifacts/design/{issue-key}/01-context.md`. The downstream design skills `draft.md`, `research.md`, `decompose.md`, `revise.md`, and `respond.md` read these recorded paths directly and do not construct documentation links from them.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
design/skills/ingest.md (1)

77-95: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Complete the manual PRD fallback contract.

When discovery finds no candidate, the workflow only asks for a PRD path. It does not require the agent to verify that the file exists, read it, or confirm it before recording the path.

The clarification lookup also targets the “same docs repo directory.” A permitted fallback outside the docs repository can therefore skip a co-located clarifications.md and its locked decisions.

After the user provides a fallback path:

  1. Verify that the file exists and is readable.
  2. Read the PRD before compiling context.
  3. Resolve clarifications.md from the directory containing the resolved PRD.
  4. Record the paths only after these checks succeed.

This keeps the fallback unrestricted while preventing incomplete design context.

As per path instructions, workflow failure modes and cross-file path contracts must be explicit. Based on the PR objective, manual fallback paths may remain outside the docs repository.

Suggested wording change
 If no match is found (or no matches contain `prd.md`), ask the user for
-the path to the PRD.
+the path to the PRD. Verify that the selected file exists and is readable,
+then read it before continuing.

-If `clarifications.md` exists in the same docs repo directory as the PRD,
+If `clarifications.md` exists in the directory containing the resolved PRD,
 read it. Note any locked decisions — these are binding constraints for the
 design.

Also applies to: 96-110

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@design/skills/ingest.md` around lines 77 - 95, Update the PRD discovery
fallback workflow in “Find the PRD in the Docs Repo” so a user-provided path may
be outside the docs repository but must be verified as existing and readable,
then read before compiling context. Resolve any clarifications.md from the
resolved PRD’s containing directory rather than the docs repo directory, and
record the PRD and clarification paths only after validation and reading
succeed; explicitly document failure handling for invalid or unreadable paths
and apply the same contract to the related clarification lookup section.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@design/skills/ingest.md`:
- Around line 77-95: Update the PRD discovery fallback workflow in “Find the PRD
in the Docs Repo” so a user-provided path may be outside the docs repository but
must be verified as existing and readable, then read before compiling context.
Resolve any clarifications.md from the resolved PRD’s containing directory
rather than the docs repo directory, and record the PRD and clarification paths
only after validation and reading succeed; explicitly document failure handling
for invalid or unreadable paths and apply the same contract to the related
clarification lookup section.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: dfbd1622-7188-4ce3-8a70-610f776fb268

📥 Commits

Reviewing files that changed from the base of the PR and between 728537a and 5bcc40c.

📒 Files selected for processing (1)
  • design/skills/ingest.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (7)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • design/skills/ingest.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

Workflow content must use plain Markdown without IDE-specific syntax.

Files:

  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • design/skills/ingest.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

Workflows should use discrete phases with explicit transitions, and controllers should support project phase overrides from .workflows/{workflow}/skills/{phase}.md before built-in defaults.

Files:

  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • design/skills/ingest.md
**/{SKILL.md,guidelines.md,skills/**/*.md,commands/**/*.md,templates/**/*.md,prompts/**/*.md}

📄 CodeRabbit inference engine (AGENTS.md)

All file references in workflow content must be relative to the referencing file's location for symlink compatibility.

Files:

  • design/skills/ingest.md
**/{SKILL.md,guidelines.md,skills/**/*.md,commands/**/*.md,templates/**/*.md,prompts/**/*.md,scripts/**/*,_shared/**/*.md}

📄 CodeRabbit inference engine (AGENTS.md)

**/{SKILL.md,guidelines.md,skills/**/*.md,commands/**/*.md,templates/**/*.md,prompts/**/*.md,scripts/**/*,_shared/**/*.md}: Significant workflow outputs must be persisted under .artifacts/{workflow-name}/{context}/; workflows must not read from or write to another workflow's artifact directory.
Behavioral workflow changes must include the corresponding version bump in the same commit; README.md and GUIDE.md changes do not require a bump.

Files:

  • design/skills/ingest.md
**/*.{md,py}

📄 CodeRabbit inference engine (AGENTS.md)

When modifying workflow behavior, preserve the canonical workflow structure: SKILL.md, guidelines.md, README.md, optional skills/, commands/, scripts/, and prompts/ directories.

Files:

  • design/skills/ingest.md
**/skills/**/*.md

📄 CodeRabbit inference engine (AGENTS.md)

**/skills/**/*.md: Attended-mode workflows must not auto-advance between phases unless that workflow explicitly documents an unattended mode.
Operations affecting shared systems require safeguards: verify git status before destructive Git operations; confirm branch and base before PR/MR pushes; require explicit approval for Jira writes by cve-fix /close, design /sync, and sizing /apply; and run Vale before applying documentation changes.

Files:

  • design/skills/ingest.md
🧠 Learnings (12)
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/ingest.md
🔇 Additional comments (1)
design/skills/ingest.md (1)

62-75: LGTM!

Also applies to: 105-110, 169-169

- Verify user-provided PRD path exists and is readable before recording
- Look for clarifications.md in the directory containing the resolved PRD,
  not specifically the docs repo directory — supports fallback paths
  outside the docs repo

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>
@adalton

adalton commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai Fixed in 3d461ae — user-provided fallback paths are now verified as existing and readable before recording. Clarifications lookup changed from "same docs repo directory" to "directory containing the resolved PRD" so it works regardless of where the PRD lives.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Commit 3d461ae =='
git show --format=fuller --stat --no-renames 3d461ae --
git show --format= --no-ext-diff --unified=18 3d461ae -- design/skills/ingest.md

printf '%s\n' '== Current relevant instructions in design/skills/ingest.md =='
rg -n -C 10 'fallback|manual|provided path|readable|exists|resolve|absolute|relative|Clarifications|01-context\.md|PRD Summary' design/skills/ingest.md

printf '%s\n' '== Consumers of recorded paths =='
rg -n -C 5 'PRD path|Clarifications path|PRD Summary|01-context\.md|resolved PRD' \
  design/skills/draft.md \
  design/skills/research.md \
  design/skills/decompose.md \
  design/skills/revise.md \
  design/skills/respond.md

Length of output: 23613


@adalton The clarification lookup change is correct. It now uses the directory that contains the resolved PRD. This supports valid fallback PRD locations outside the configured docs repository.

I will keep both findings open.

  • The new existence and readability check prevents a missing or unreadable file. It does not confirm that the fallback file is the intended PRD. Step 3 still defines the published docs-repository PRD as authoritative. The fallback flow needs an explicit user confirmation that the selected file is the current PRD.
  • The recorded path format remains undefined. The workflow says to record a “resolved” path, but it does not require an absolute path or specify a base directory for a relative path. Downstream skills read this value directly. Require an absolute path, or require paths relative to the workspace root.

✏️ Learnings added
Learnt from: adalton
URL: https://github.com/flightctl/ai-workflows/pull/100

Timestamp: 2026-08-06T19:39:55.988Z
Learning: In `design/skills/ingest.md`, a user-provided fallback PRD path may be outside the configured docs repository. The workflow must verify that this file exists and is readable before it reads or records the path. If `clarifications.md` exists, the workflow reads it from the directory that contains the resolved PRD path.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

Comment thread design/skills/ingest.md Outdated
design/skills/ingest.md had the write-back but the same validate-and-re-ask
pattern in design/publish, prd/publish, implement/ingest, and e2e/ingest
did not persist corrected values. A stale config would cause repeated
re-prompts on every invocation from any workflow.

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
design/skills/ingest.md (1)

106-111: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Define the stored path format.

This step records the resolved paths but does not specify whether they are absolute, workspace-root-relative, or relative to the docs repository. design/skills/research.md consumes the PRD Summary path directly in Lines 69-70. Define one format here and require downstream phases to use the same format.

As per path instructions, cross-workflow file references must use one consistent, symlink-safe path convention.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@design/skills/ingest.md` around lines 106 - 111, Define the path format in
the “Record the Resolved Paths” step, using one symlink-safe convention for both
the PRD and optional clarifications paths. Require the stored values in
`.artifacts/design/{issue-key}/01-context.md` and consumers such as `/research`
to use that same convention consistently.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@design/skills/ingest.md`:
- Around line 94-95: Update the fallback PRD ingestion instructions around the
existing path validation so the workflow explicitly asks the user to confirm
that the readable file is the current authoritative PRD before reading or
ingesting it. Keep the fallback path unrestricted and retain the existing
existence and readability checks.
- Around line 99-100: Update the clarification-loading instructions around
clarifications.md to require that an existing file is readable before processing
its contents. If readability validation fails, stop ingestion and ask the user
how to proceed; only continue to note locked decisions after the file is
successfully read.

---

Outside diff comments:
In `@design/skills/ingest.md`:
- Around line 106-111: Define the path format in the “Record the Resolved Paths”
step, using one symlink-safe convention for both the PRD and optional
clarifications paths. Require the stored values in
`.artifacts/design/{issue-key}/01-context.md` and consumers such as `/research`
to use that same convention consistently.
🪄 Autofix

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: Enterprise

Run ID: f9a96ee3-5b4a-4cf2-b345-b4b71ebb290a

📥 Commits

Reviewing files that changed from the base of the PR and between 728537a and 3d461ae.

📒 Files selected for processing (1)
  • design/skills/ingest.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (6)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • design/skills/ingest.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

All workflow content must use plain Markdown and must not use IDE-specific syntax.

Files:

  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • design/skills/ingest.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

**/skills/*.md: Workflows should operate through discrete phases with explicit transitions.
Attended-mode workflows must not auto-advance; they must wait for user input between phases unless documented unattended mode is explicitly supported.

Files:

  • design/skills/ingest.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • design/skills/ingest.md
**/*.{md,py,sh,json}

📄 CodeRabbit inference engine (AGENTS.md)

All file references used by workflows must be relative to the referencing file's location for symlink compatibility.

Files:

  • design/skills/ingest.md
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: Significant workflow outputs must be persisted under .artifacts/{workflow-name}/{context}/.
Each workflow's .artifacts/{workflow-name}/ directory is private; other workflows must never read from or write to it.
Before destructive Git operations, verify the working state with git status.
Before creating or pushing a PR/MR, confirm the branch and base branch.
Run Vale validation before applying documentation changes to repository files.

Files:

  • design/skills/ingest.md
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md,templates/*,prompts/*,scripts/*}

📄 CodeRabbit inference engine (AGENTS.md)

Behavioral workflow files require a version bump when modified; README.md and GUIDE.md do not require one.

Files:

  • design/skills/ingest.md
🧠 Learnings (12)
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/ingest.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/ingest.md
🔇 Additional comments (3)
design/skills/ingest.md (3)

62-76: LGTM!


77-92: LGTM!


97-98: LGTM!

Also applies to: 103-105, 170-170

Comment thread design/skills/ingest.md
Comment thread design/skills/ingest.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
design/skills/publish.md (1)

85-106: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Require each candidate directory to contain the published PRD.

The find command matches directory names only. It can select a directory that does not contain prd.md, which can produce the wrong {release} and {feature} values.

Filter candidates to directories with a readable prd.md. Show the resolved path and ask the user to confirm that it is the intended current PRD before using it.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@design/skills/publish.md` around lines 85 - 106, Update the PRD discovery
flow around the find command to retain only candidate directories containing a
readable prd.md. Display the resolved candidate path and require the user to
confirm it is the intended current PRD before extracting or proposing release
and feature defaults; preserve the existing multiple-match selection flow.
e2e/skills/ingest.md (1)

101-110: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Validate the configured remote in every shared-config consumer.

Both workflows validate the local path but not the configured Git remote. A stale configuration can make a workflow consume documents from the wrong repository.

  • e2e/skills/ingest.md#L101-L110: compare the repository origin with docs_repo_remote before accepting the configuration.
  • implement/skills/ingest.md#L92-L101: apply the same remote validation before accepting the configuration.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@e2e/skills/ingest.md` around lines 101 - 110, Update the shared-config
validation in e2e/skills/ingest.md:101-110 and implement/skills/ingest.md:92-101
to compare the configured docs_repo_remote with the local repository’s origin
remote before accepting .artifacts/config.json; if they differ, inform the user,
re-request the correct values, and update the configuration accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@design/skills/publish.md`:
- Around line 85-106: Update the PRD discovery flow around the find command to
retain only candidate directories containing a readable prd.md. Display the
resolved candidate path and require the user to confirm it is the intended
current PRD before extracting or proposing release and feature defaults;
preserve the existing multiple-match selection flow.

In `@e2e/skills/ingest.md`:
- Around line 101-110: Update the shared-config validation in
e2e/skills/ingest.md:101-110 and implement/skills/ingest.md:92-101 to compare
the configured docs_repo_remote with the local repository’s origin remote before
accepting .artifacts/config.json; if they differ, inform the user, re-request
the correct values, and update the configuration accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: d902416c-7fbf-4004-8c81-2fd490ab48eb

📥 Commits

Reviewing files that changed from the base of the PR and between 3d461ae and 6f44d5c.

📒 Files selected for processing (4)
  • design/skills/publish.md
  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • prd/skills/publish.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (5)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

Workflow content must use plain Markdown and must not contain IDE-specific syntax.

Files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

**/skills/*.md: Workflows must not auto-advance in attended mode; they must wait for user input between phases unless an explicit unattended mode is documented.
Shared cross-cutting concerns must live in _shared/ and be referenced from skills using relative paths.

Files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
**/*.{md,py,sh}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{md,py,sh}: All file references used by workflows must be relative to the referencing file's location for symlink compatibility.
All significant workflow outputs must be persisted under .artifacts/{workflow-name}/{context}/.
Each workflow's .artifacts/{workflow-name}/ directory is private; other workflows must never read from or write to it.
When modifying behavioral workflow files, update the corresponding workflow's SKILL.md version according to semver: PATCH for wording or formatting changes, MINOR for behavioral or phase changes, and MAJOR for removed, renamed, or restructured phases.
Before destructive Git operations, verify with git status; before PR/MR creation, confirm the branch and base; Jira writes require explicit approval and are limited to cve-fix /close, design /sync, and sizing /apply; run Vale validation before applying documentation changes.

Files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md,templates/*,prompts/*,scripts/*}

📄 CodeRabbit inference engine (AGENTS.md)

Changes to behavioral files require a version bump; README.md and GUIDE.md are non-behavioral and do not require one.

Files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
🧠 Learnings (12)
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • e2e/skills/ingest.md
  • prd/skills/publish.md
  • design/skills/publish.md
  • implement/skills/ingest.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/publish.md
🔇 Additional comments (5)
prd/skills/publish.md (2)

153-173: Run Vale before copying the clarification artifact.

This is the same unresolved issue raised in the previous review. The workflow copies 02-clarifications.md into the docs repository without a preceding Vale check.

Validate 03-prd.md and 02-clarifications.md before either file is copied or staged, as required by the coding guidelines.

Source: Coding guidelines


34-34: LGTM!

Also applies to: 43-43, 54-54, 205-205, 239-242

design/skills/publish.md (1)

34-34: LGTM!

Also applies to: 43-43, 54-54, 310-310

e2e/skills/ingest.md (1)

119-120: LGTM!

implement/skills/ingest.md (1)

110-111: LGTM!

@adalton
adalton requested a review from amir-yogev-gh August 7, 2026 13:43
…implement

- design/skills/publish.md: Filter find matches to directories containing
  prd.md before extracting release/feature defaults (matching ingest.md)
- e2e/skills/ingest.md: Add remote URL validation to config check
  (matching prd/design publish validation)
- implement/skills/ingest.md: Same remote URL validation addition

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>
@adalton

adalton commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai Responding to outside-diff comments from reviews 4883322353 and 4883352528:

ingest.md:106-111 — define stored path format: Already pushed back twice. The AI resolves a filesystem path and records it. Downstream phases read the file at that path. No ambiguity exists in practice. No change.

publish.md:85-106 — require prd.md in find matches: Fixed in 8f33fab — added prd.md filter to the find matches in design/skills/publish.md, consistent with the same filter already in design/skills/ingest.md.

e2e/ingest.md and implement/ingest.md — validate remote: Fixed in 8f33fab — added remote URL validation (step 3: verify remote matches docs_repo_remote) to both e2e/skills/ingest.md and implement/skills/ingest.md, matching the validation in prd and design publish phases.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Commit 8f33fab =='
git show --format=fuller --stat --no-renames 8f33fab --
git show --format= --no-ext-diff --unified=18 8f33fab -- \
  design/skills/publish.md \
  e2e/skills/ingest.md \
  implement/skills/ingest.md

printf '%s\n' '== Current design publish discovery instructions =='
rg -n -C 12 'find |prd\.md|matches|match|release|feature' design/skills/publish.md

printf '%s\n' '== Current E2E and implement remote validation instructions =='
rg -n -C 12 'docs_repo_remote|remote|Step 3|validate|verify' \
  e2e/skills/ingest.md \
  implement/skills/ingest.md

printf '%s\n' '== Current stored-path instructions =='
rg -n -C 10 'resolved PRD|record.*path|PRD path|Clarifications path|absolute|relative|fallback|01-context\.md' \
  design/skills/ingest.md \
  design/skills/draft.md \
  design/skills/research.md \
  design/skills/decompose.md \
  design/skills/revise.md \
  design/skills/respond.md

Length of output: 77361


@adalton Verified 8f33fab.

  • design/skills/publish.md now considers only matching directories that contain prd.md. This addresses the publish discovery finding.
  • e2e/skills/ingest.md and implement/skills/ingest.md now validate the configured remote against docs_repo_remote. This addresses the configuration validation findings.
  • I acknowledge the decision to retain the current resolved-path behavior. I will not repeat that finding.

✏️ Learnings added
Learnt from: adalton
URL: https://github.com/flightctl/ai-workflows/pull/100

Timestamp: 2026-08-07T13:48:20.131Z
Learning: In `design/skills/publish.md`, the workflow must filter Jira issue-key directory matches to directories containing `prd.md` before it derives release and feature defaults.

Learnt from: adalton
URL: https://github.com/flightctl/ai-workflows/pull/100

Timestamp: 2026-08-07T13:48:20.132Z
Learning: In `e2e/skills/ingest.md` and `implement/skills/ingest.md`, validation of the workspace-level `.artifacts/config.json` must verify the local docs repository path, Git repository status, and that the repository remote matches `docs_repo_remote`. If validation fails, the workflow re-asks for corrected values and updates the configuration.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

@adalton
adalton requested a review from amir-yogev-gh August 7, 2026 13:49

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
design/skills/publish.md (1)

54-55: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Define and normalize the shared docs_repo_path format.

The prompt accepts values such as ~/src/planning-docs, but later commands pass the stored value inside quotes, such as git -C "{docs_repo_path}" and find "{docs_repo_path}". A literal ~ does not expand inside quotes. This can make the current and later workflow runs fail to locate the docs repository.

Require an absolute path or explicitly define workspace-root-relative storage. Normalize the value before writing .artifacts/config.json. Apply the same rule in all three writers.

  • design/skills/publish.md#L54-L55: normalize docs_repo_path before saving the shared configuration.
  • e2e/skills/ingest.md#L120-L121: use the same canonical path format.
  • implement/skills/ingest.md#L111-L112: use the same canonical path format.

As per path instructions, keep one consistent path contract across workflow consumers; this runtime configuration value is not a Markdown link.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@design/skills/publish.md` around lines 54 - 55, Define one canonical
absolute-path contract for docs_repo_path, explicitly normalize user-provided
values such as ~/src/planning-docs before persisting them, and apply it
consistently in design/skills/publish.md lines 54-55, e2e/skills/ingest.md lines
120-121, and implement/skills/ingest.md lines 111-112; update each writer to
save the normalized path in .artifacts/config.json while preserving
docs_repo_remote.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@design/skills/publish.md`:
- Around line 54-55: Define one canonical absolute-path contract for
docs_repo_path, explicitly normalize user-provided values such as
~/src/planning-docs before persisting them, and apply it consistently in
design/skills/publish.md lines 54-55, e2e/skills/ingest.md lines 120-121, and
implement/skills/ingest.md lines 111-112; update each writer to save the
normalized path in .artifacts/config.json while preserving docs_repo_remote.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 70057b27-0c6f-4943-bcba-f34c4f4cd117

📥 Commits

Reviewing files that changed from the base of the PR and between 6f44d5c and 8f33fab.

📒 Files selected for processing (3)
  • design/skills/publish.md
  • e2e/skills/ingest.md
  • implement/skills/ingest.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (6)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

**/*.md: Workflow content must use plain Markdown without IDE-specific syntax.
Workflows must wait for user input between phases in attended mode; they must not auto-advance unless an explicit unattended mode is documented.

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
**/{SKILL,guidelines,skills,commands,templates,prompts}/*.md

📄 CodeRabbit inference engine (AGENTS.md)

All file references in workflow content must be relative to the referencing file's location for symlink compatibility.

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: All significant workflow outputs must be saved under .artifacts/{workflow-name}/{context}/.
Each workflow's .artifacts/{workflow-name}/ directory is private; workflows must never read from or write to another workflow's artifact directory.
Include behavioral version bumps in the same commit as the behavioral change; do not create a separate version-bump commit.
Install workflows with ./install.sh <target> using cursor, claude, gemini, or all as targets.
Before destructive Git operations, verify the repository state with git status.
Before creating a PR or MR, confirm the branch and base before pushing.
Only cve-fix /close, design /sync, and sizing /apply may write to Jira, and each requires explicit approval.
Run Vale validation before applying documentation changes to repository files.

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
**/{SKILL,guidelines,skills,commands,templates,prompts}/*

📄 CodeRabbit inference engine (AGENTS.md)

Behavioral workflow files require a version bump when modified; README.md and GUIDE.md do not.

Files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
🧠 Learnings (13)
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • design/skills/publish.md
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/publish.md
📚 Learning: 2026-08-07T13:47:28.020Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 100
File: design/skills/ingest.md:99-100
Timestamp: 2026-08-07T13:47:28.020Z
Learning: For AI workflow skill files under design/skills, do not require separate explicit handling for every generic filesystem I/O failure when reading an existing file. An existence check followed by a read instruction is sufficient; the AI agent should report ordinary read failures as they occur.

Applied to files:

  • design/skills/publish.md
🔇 Additional comments (3)
design/skills/publish.md (1)

34-34: LGTM!

Also applies to: 43-43, 85-108, 312-312

e2e/skills/ingest.md (1)

99-112: LGTM!

implement/skills/ingest.md (1)

99-102: LGTM!

All five config-writing paths now resolve ~ to the user's home directory
before saving to .artifacts/config.json, ensuring the stored path is
absolute and works correctly in quoted shell commands.

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>
@adalton

adalton commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai Fixed in 3a3af3a — all five config-writing paths now resolve ~ to the user's home directory before persisting, ensuring docs_repo_path is always stored as an absolute path.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Commit 3a3af3a =='
git show --format=fuller --stat --no-renames 3a3af3a --
git show --format= --no-ext-diff --unified=16 3a3af3a --

printf '%s\n' '== Current config write and path-normalization instructions =='
rg -n -C 10 \
  'docs_repo_path|\.artifacts/config\.json|expand.*~|resolve.*~|absolute path|home directory|write.*config|persist' \
  design prd e2e implement AGENTS.md 2>/dev/null || true

printf '%s\n' '== Files that write workspace configuration =='
rg -n -C 6 \
  '(write|save|persist|update).{0,100}\.artifacts/config\.json|\.artifacts/config\.json.{0,100}(write|save|persist|update)' \
  design prd e2e implement 2>/dev/null || true

Length of output: 87847


@adalton I verified 3a3af3a.

The five initial configuration-write paths now require the workflow to resolve ~ to the user’s home directory before it writes .artifacts/config.json. This fixes the new-config case.

One gap remains. In all five files, the existing-config failure path still says to re-ask for corrected values and update .artifacts/config.json. It does not require the workflow to resolve ~ before that update.

A user can therefore provide ~/src/planning-docs when correcting an invalid config. The workflow can persist ~ again. Add the same normalization instruction to the corrected-values path in each file.

You are interacting with an AI system.

The previous commit added tilde resolution to new-config writes but
missed the re-ask-on-validation-failure paths. All five files now
resolve ~ before saving corrected values too.

Assisted-by: Claude Opus 4.6 (1M) <noreply@anthropic.com>
@adalton

adalton commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai Good catch — fixed in 51b1767. The re-ask-on-validation-failure paths in all five files now also resolve ~ before saving corrected values. Both the new-config and corrected-config paths are covered.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Commit 51b1767 =='
git show --format=fuller --stat --no-renames 51b1767 --
git show --format= --no-ext-diff --unified=16 51b1767 --

printf '%s\n' '== Corrected configuration paths =='
rg -n -C 12 \
  'validation fails|validation failure|re-ask|corrected values|corrected.*config|expand.*~|resolve.*~|home directory|\.artifacts/config\.json' \
  design prd e2e implement AGENTS.md 2>/dev/null || true

Length of output: 50418


@adalton Verified 51b1767.

All five validation-failure paths now resolve ~ to an absolute path before they update .artifacts/config.json. The initial-config and corrected-config paths now use the same storage rule.

🐇✅

You are interacting with an AI system.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
prd/skills/publish.md (1)

152-170: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Run Vale before publishing clarifications.md.

The new branch copies and stages a documentation file. Add the repository-configured Vale validation for 02-clarifications.md before cp and git add. Stop before either operation when validation fails. As per coding guidelines, run Vale validation before applying documentation changes to repository files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@prd/skills/publish.md` around lines 152 - 170, Update the clarification
publishing flow to run the repository-configured Vale validation against
02-clarifications.md before the cp operation, and only copy and stage the file
when validation succeeds. Ensure validation failure stops the flow before either
cp or git add, while preserving the existing commit behavior.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@design/skills/publish.md`:
- Around line 52-54: Normalize corrected docs_repo_path values by resolving ~ to
the user's home directory before every shared configuration write. Apply this in
design/skills/publish.md:52-54, e2e/skills/ingest.md:118-121,
implement/skills/ingest.md:109-112, prd/skills/publish.md:52-54, and
design/skills/ingest.md:74-76, while preserving the validated docs_repo_remote
and absolute path in .artifacts/config.json.

---

Duplicate comments:
In `@prd/skills/publish.md`:
- Around line 152-170: Update the clarification publishing flow to run the
repository-configured Vale validation against 02-clarifications.md before the cp
operation, and only copy and stage the file when validation succeeds. Ensure
validation failure stops the flow before either cp or git add, while preserving
the existing commit behavior.
🪄 Autofix

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: Enterprise

Run ID: 79ff2bad-3810-4c53-8797-c98f8b5c87a6

📥 Commits

Reviewing files that changed from the base of the PR and between 8f33fab and 3a3af3a.

📒 Files selected for processing (5)
  • design/skills/ingest.md
  • design/skills/publish.md
  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • prd/skills/publish.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (6)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

**/*.md: Workflows should use progressive disclosure: keep SKILL.md thin and place details in guidelines.md and skills/.
In attended mode, workflows must not auto-advance; they must wait for user input between phases unless an explicit unattended mode is documented.
All significant workflow outputs must be persisted under .artifacts/{workflow-name}/{context}/.
Each workflow's .artifacts/{workflow-name}/ directory is private; workflows must never read from or write to another workflow's artifact directory.
Only Jira, published documentation repository files, and workspace-level .artifacts/config.json are shared interfaces between workflows.
Before destructive Git operations, verify the working state with git status.
Before creating or pushing a PR/MR, confirm the branch and base branch.
Only cve-fix /close, design /sync, and sizing /apply may write to Jira, and each requires explicit approval.
Run Vale validation before applying documentation changes to repository files.

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

**/skills/*.md: Workflows should execute through discrete phases with explicit transitions, with controllers dispatching phases when present.
Project phase overrides must be resolved from .workflows/{workflow}/skills/{phase}.md before using the built-in phase skill.

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
**/*.{md,py,sh}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{md,py,sh}: Workflow content must use plain markdown and contain no IDE-specific syntax.
All file references in workflow content must be relative paths for symlink compatibility.

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
**/{guidelines.md,skills/*.md,commands/*.md,templates/*,prompts/*,scripts/*}

📄 CodeRabbit inference engine (AGENTS.md)

Changes to behavioral workflow files require a version bump in the corresponding workflow SKILL.md; README.md and GUIDE.md are non-behavioral and do not require one.

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md,templates/*,prompts/*,scripts/*}

📄 CodeRabbit inference engine (AGENTS.md)

Include the workflow version bump in the same commit as the behavioral change; do not create a separate version-bump commit.

Files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
🧠 Learnings (13)
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • implement/skills/ingest.md
  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • design/skills/publish.md
  • prd/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-08-07T13:47:28.020Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 100
File: design/skills/ingest.md:99-100
Timestamp: 2026-08-07T13:47:28.020Z
Learning: For AI workflow skill files under design/skills, do not require separate explicit handling for every generic filesystem I/O failure when reading an existing file. An existence check followed by a read instruction is sufficient; the AI agent should report ordinary read failures as they occur.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
🔇 Additional comments (3)
design/skills/publish.md (1)

84-107: LGTM!

Also applies to: 311-311

prd/skills/publish.md (1)

34-34: LGTM!

Also applies to: 204-204, 238-241

design/skills/ingest.md (1)

80-112: LGTM!

Also applies to: 171-171

Comment thread design/skills/publish.md
@adalton

adalton commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai Responding to review 4883507893:

design/skills/publish.md:54 — normalize on correction path: Already fixed in 51b1767 (the commit after the one this review covers). Both the new-config path (line 53) and the re-ask path (line 43) now resolve ~ before saving.

prd/skills/publish.md:152-170 — Vale on clarifications: Duplicate of a previous comment already addressed. The clarification log is AI-generated Q&A, not authored documentation — Vale would produce false positives on conversational tone. No change.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== Commit 51b1767: design publish changes =='
git show --format=fuller --stat --no-renames 51b1767 --
git show --format= --no-ext-diff --unified=18 51b1767 -- design/skills/publish.md

printf '%s\n' '== Current configuration write instructions in design/skills/publish.md =='
rg -n -C 12 're-ask|corrected|expand.*~|resolve.*~|home directory|docs_repo_path|\.artifacts/config\.json' \
  design/skills/publish.md

printf '%s\n' '== Current clarification publication and validation instructions in prd/skills/publish.md =='
rg -n -C 14 'clarifications|Vale|lint|Q&A|publish|commit' prd/skills/publish.md

Length of output: 17308


@adalton Verified 51b1767.

design/skills/publish.md now normalizes ~ before both config writes:

  • The validation-failure correction path normalizes ~ before it updates .artifacts/config.json.
  • The new-config path normalizes ~ before it writes .artifacts/config.json.

The clarification log in prd/skills/publish.md is an AI-generated Q&A artifact. Vale validation is not required for this artifact. I withdraw that finding.


✏️ Learnings added
Learnt from: adalton
URL: https://github.com/flightctl/ai-workflows/pull/100

Timestamp: 2026-08-07T14:04:26.202Z
Learning: In `prd/skills/publish.md`, `.artifacts/prd/{issue-key}/02-clarifications.md` is an AI-generated Q&A clarification log that is conditionally published as `clarifications.md` alongside `prd.md`. Do not require Vale validation for this artifact because conversational Q&A text produces false positives.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
prd/skills/publish.md (1)

153-173: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Remove stale published clarifications when no current log exists.

At Line [153], if the destination already contains clarifications.md and .artifacts/prd/{issue-key}/02-clarifications.md is absent, this conditional copy path leaves the old file in place. design/skills/ingest.md then loads stale locked decisions for the new PRD.

Delete the previous destination file before staging when no current clarification artifact exists, or stop and require explicit confirmation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@prd/skills/publish.md` around lines 153 - 173, Update the clarification
publication flow in the PRD publish instructions so that when
`.artifacts/prd/{issue-key}/02-clarifications.md` is absent, any existing
destination `clarifications.md` is removed before staging, or publishing stops
for explicit confirmation. Preserve the current copy-and-commit behavior when
the clarification artifact exists.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@prd/skills/publish.md`:
- Around line 153-173: Update the clarification publication flow in the PRD
publish instructions so that when
`.artifacts/prd/{issue-key}/02-clarifications.md` is absent, any existing
destination `clarifications.md` is removed before staging, or publishing stops
for explicit confirmation. Preserve the current copy-and-commit behavior when
the clarification artifact exists.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 4270e806-72b9-4007-b2b4-b40bb0f54bd8

📥 Commits

Reviewing files that changed from the base of the PR and between 3a3af3a and 51b1767.

📒 Files selected for processing (5)
  • design/skills/ingest.md
  • design/skills/publish.md
  • e2e/skills/ingest.md
  • implement/skills/ingest.md
  • prd/skills/publish.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (5)
**/{SKILL.md,guidelines.md,skills/*.md,commands/*.md}

📄 CodeRabbit inference engine (Custom checks)

Flag any absolute filesystem path in markdown files within workflow directories (*/SKILL.md, /skills/.md, /commands/.md, */guidelines.md). Paths like /home/, /Users/, /tmp/, /var/, /opt/ are prohibited because workflows are installed via symlink and must use relative paths only. Paths inside fenced code blocks that are clearly examples (containing "example", "e.g.", or placeholder usernames like /home/user/) are exempt.

Files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
**/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed markdown file in a workflow directory, verify that file path references (backtick-quoted paths like ../skills/controller.md or guidelines.md) point to files that exist. Flag references to files that don't exist (dangling references). Also flag skill or command files that exist but are never referenced from SKILL.md, controller.md, or any command file (orphaned files).

Files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md

⚙️ CodeRabbit configuration file

**/*.md: Cross-workflow consistency (ai-workflows conventions):

  • All file references must be relative paths (never absolute) —
    this is critical for symlink compatibility
  • No IDE-specific syntax (Cursor-specific, VS Code-specific, etc.)
  • Consistent terminology within a workflow: pick one term, stick
    with it
  • Schema field names and types must match between producer and
    consumer files (e.g., if a field is defined in one phase skill
    and consumed in another, names and types must agree)
  • No verbatim duplication of multi-line instruction blocks
    across SKILL.md, guidelines.md, and controller.md — each has
    a distinct role (shared phase names and brief references are
    expected cross-referencing, not duplication)

Files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
**/skills/*.md

📄 CodeRabbit inference engine (Custom checks)

For any changed skills/*.md file, verify that main steps are numbered sequentially (Step 1, Step 2, Step 3... or ## Step 1, ## Step 2...). Flag: gaps in numbering (1, 2, 4), duplicate numbers (two Step 3s), and any skill with more than 10 main steps (cognitive load risk for AI agents). Sub-steps (Step 1a, Step 3b) are acceptable ONLY when they represent conditional branches off the parent step (e.g., "Step 1a: If , do X"). Flag sub-steps that are actually new main steps inserted to avoid renumbering — those should be promoted to full steps with the sequence renumbered.

Workflows must operate through discrete phases with explicit transitions, and attended mode must not auto-advance unless unattended mode is explicitly documented.

Files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md

⚙️ CodeRabbit configuration file

**/skills/*.md: Phase skill review (ai-workflows conventions):

  • Maximum 10 steps per skill invocation — flag if exceeded
    (cognitive load / context window risk for AI agents)
  • Main steps must be numbered sequentially: no gaps, no
    duplicates. Sub-steps (e.g., Step 1a) are allowed ONLY for
    conditional branches off a parent step — never as a way to
    insert a new main step without renumbering
  • Internal cross-references (e.g., "see Step 4") must point to
    correct step numbers
  • No step should depend on output from a later step
  • Synthesis tasks (summarization, assessment, verdict) must NOT
    be buried after heavy per-item processing — they degrade in
    long contexts
  • controller.md must reference sibling skills as phase-name.md
    (not skills/phase-name.md) — relative to its own directory
  • Skills referencing _shared/ resources must use the correct
    relative path depth (e.g., ../../_shared/recipes/self-review-gate.md
    from skills/)
  • Failure modes must be documented: what to do when prerequisites
    are missing, when zero results are returned, when tools are
    unavailable
  • Escalation criteria must be clear: when to stop and ask the user
  • Instructions must be unambiguous — an AI agent reading
    top-to-bottom should produce correct output on the first try
  • If the file has YAML frontmatter, name and description are required

Files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
**/{commands,skills}/*.md

📄 CodeRabbit inference engine (AGENTS.md)

All workflow file references must use relative paths for symlink compatibility.

Files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
**/*

📄 CodeRabbit inference engine (AGENTS.md)

**/*: Any directory containing SKILL.md is automatically discoverable by the installer and therefore represents a workflow.
Cross-cutting concerns must live in _shared/ and be referenced using relative paths.
Project phase overrides must be located at .workflows/{workflow}/skills/{phase}.md; controllers must check for the override before using the built-in phase skill.
All significant workflow outputs must be persisted under .artifacts/{workflow-name}/{context}/.
Each workflow's .artifacts/{workflow-name}/ directory is private; workflows must never read from or write to another workflow's artifact directory.
Behavioral files requiring a version bump include SKILL.md, guidelines.md, skills/*.md, commands/*.md, templates, prompts, scripts, _shared/**/*.md, and execution-read root-level Markdown files; README.md and GUIDE.md are non-behavioral and do not require a bump.
When a file in _shared/ changes, PATCH-bump every workflow that references it; identify affected workflows by searching for the shared file basename.
Include the version bump in the same commit as the behavioral change; do not create a separate version-bump commit.
Before destructive Git operations, verify the repository state with git status.
Before creating a PR or MR, confirm the branch and base branch before pushing.
Only cve-fix /close, design /sync, and sizing /apply may write to Jira, and each requires explicit approval.
Run Vale validation before applying documentation changes to repository files.

Files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
🧠 Learnings (13)
📚 Learning: 2026-04-12T00:25:51.234Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/respond.md:29-31
Timestamp: 2026-04-12T00:25:51.234Z
Learning: In flightctl/ai-workflows skill markdown files, treat path references as two categories:
1) For cross-document markdown links (e.g., links to other .md files like ../skills/controller.md or ../../templates/design.md), use paths relative to the current markdown file’s location so links work under symlinks.
2) For runtime artifact paths used as prose instructions to the AI agent (e.g., .artifacts/design/{issue-number}/publish-metadata.json or .artifacts/prd/config.json), keep them repo-root-relative (start with .artifacts/). Do not convert these artifact paths to be relative to the skill file directory (e.g., don’t rewrite to ../../.artifacts/...), because the AI resolves them from the repo root.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-04-15T10:19:54.839Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:25-26
Timestamp: 2026-04-15T10:19:54.839Z
Learning: In flightctl/ai-workflows, for Jira URL examples inside skill Markdown files, follow the repo-wide convention and use a real example Jira link of the form `https://issues.redhat.com/browse/PROJ-123` (not a generic placeholder like `https://example.com/...`). Since this is a documented convention, do not flag it as a portability/documentation hardcoding issue when reviewing similar skill markdown files.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-04-16T10:39:50.418Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 22
File: kcs/skills/gather.md:34-37
Timestamp: 2026-04-16T10:39:50.418Z
Learning: In flightctl/ai-workflows workflow skill files (e.g., kcs/bugfix/prd/design skills), do not require sanitization/normalization of free-form user-supplied identifier placeholders (such as {issue-key} or {issue-number}) when they’re used to construct artifact paths like `.artifacts/{workflow}/{identifier}/`. This is intentional because these workflows run in human-supervised IDE sessions where the user provides the values interactively and confirms the output. Therefore, do not flag missing sanitization/normalization of these identifiers as a security or correctness issue during review for these skill files.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-05-25T17:11:32.207Z
Learnt from: galel12
Repo: flightctl/ai-workflows PR: 47
File: README.md:140-142
Timestamp: 2026-05-25T17:11:32.207Z
Learning: In markdown files under the repo’s skill/command areas (e.g., `skills/**` and `commands/**`), any references to other files on disk (like links/includes pointing to other skill/command markdown such as `../skills/controller.md` or `commands/*.md`) must use relative paths—never absolute paths (no leading `/` or fully-qualified filesystem paths). This ensures the references remain symlink-safe and resolve correctly at runtime. Do not apply this rule to human-facing prose docs like `README.md`/`CONTRIBUTING.md`; when those documents intentionally distinguish user-level vs project-level install locations, keep the absolute user-level paths (e.g., `~/.cursor/commands/`) as written so the distinction is clear.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-07-23T14:18:59.204Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 84
File: bugfix/SKILL.md:3-3
Timestamp: 2026-07-23T14:18:59.204Z
Learning: In flightctl/ai-workflows documentation, treat backtick-quoted workflow path templates that include placeholders (e.g., `commands/{command}.md`, `skills/{phase}.md`) as runtime-dispatch/template instructions for AI agents, not literal Markdown links. When these appear, do not flag them as dangling/invalid references solely because the braces indicate substitution of an invoked command or phase name at runtime.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-08-06T13:07:53.827Z
Learnt from: asafbennatan
Repo: flightctl/ai-workflows PR: 99
File: pr-review/skills/start.md:0-0
Timestamp: 2026-08-06T13:07:53.827Z
Learning: In Markdown templates containing nested triple-backtick code fences, wrap the outer template block with a fence of at least four backticks. This prevents inner triple-backtick fences from prematurely terminating the outer block and preserves correct Markdown rendering.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
  • implement/skills/ingest.md
  • e2e/skills/ingest.md
📚 Learning: 2026-07-27T19:10:53.566Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 85
File: design/skills/publish.md:103-103
Timestamp: 2026-07-27T19:10:53.566Z
Learning: In flightctl/ai-workflows skill markdown workflows under {design,prd}/skills/ (e.g., publish/revise/respond), do not hardcode downstream branch names like `prd/{issue-key}` or `design/{issue-key}`. Instead, follow the existing `{branch-name}` propagation convention used by the implement and e2e workflows, and ensure downstream commands pass through the `{branch-name}` value consistently across publish, revise, and respond steps.

Applied to files:

  • prd/skills/publish.md
  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-04-10T20:54:40.086Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:139-146
Timestamp: 2026-04-10T20:54:40.086Z
Learning: For instructional/procedural Markdown “skill” files under `{design,bugfix}/skills/` (e.g., step-by-step “If X, do Y” content), ignore LanguageTool findings for the specific rule `ENGLISH_WORD_REPEAT_BEGINNING_RULE`. These sequential “If X, do Y” conditional steps are expected for instructional clarity; rewording to satisfy the rule can introduce ambiguity and reduce readability.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-04-12T00:25:49.194Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 20
File: design/skills/revise.md:32-37
Timestamp: 2026-04-12T00:25:49.194Z
Learning: In `design/skills/*.md` (e.g., `design/skills/revise.md`, `design/skills/respond.md`) the AI agent “runtime file path” instructions must use repo-root-relative paths (the agent executes from the repo root). For example, use paths like `.artifacts/design/{issue-number}/02-design.md` rather than `../../.artifacts/...`. Only apply relative-path path fixes to actual markdown hyperlink/reference syntax; do not rewrite these prose runtime path instructions.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:55:45.514Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/publish.md:165-180
Timestamp: 2026-07-28T19:55:45.514Z
Learning: When reviewing the design workflow documentation under design/skills/*.md, account for the intended publication/sync order: design/skills/publish.md publishes the docs repo before sync, so feature-local Story identifiers in 07-testplan.md are expected at that stage and should not be treated as errors. design/skills/respond.md and design/skills/revise.md should only resolve published testplan Story fields via sync-manifest.json when it exists; if sync-manifest.json is absent, leaving fields un-resolved is expected. design/skills/sync.md is responsible for Jira-key resolution and should report any references it cannot resolve while preserving the original unresolved references as-is.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T19:56:19.476Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 87
File: design/skills/sync.md:639-647
Timestamp: 2026-07-28T19:56:19.476Z
Learning: When writing/reviewing downstream phases in the design workflow that update the published docs repository, do not assume a hardcoded default branch name. Instead, read the `branch` value from `.artifacts/design/{issue-key}/publish-metadata.json` (produced by the publish step) and use that branch for any subsequent published-docs operations so user overrides are honored.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-07-28T21:51:15.223Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 86
File: design/skills/respond.md:32-36
Timestamp: 2026-07-28T21:51:15.223Z
Learning: In this repo’s “design skills” flows that consume `publish-metadata.json`, treat it as a trusted internal artifact produced by the `/publish` workflow: downstream PRD/design skills may rely on fields like `branch` only after the consumer verifies that the metadata file exists. If a metadata field is missing or empty, the schema/field validation should be implemented in the `/publish` producer (the source of `publish-metadata.json`) rather than duplicated in every downstream consumer, matching the current handling in the implement/e2e workflows for internally generated branch data.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
📚 Learning: 2026-08-07T13:47:28.020Z
Learnt from: adalton
Repo: flightctl/ai-workflows PR: 100
File: design/skills/ingest.md:99-100
Timestamp: 2026-08-07T13:47:28.020Z
Learning: For AI workflow skill files under design/skills, do not require separate explicit handling for every generic filesystem I/O failure when reading an existing file. An existence check followed by a read instruction is sufficient; the AI agent should report ordinary read failures as they occur.

Applied to files:

  • design/skills/publish.md
  • design/skills/ingest.md
🔇 Additional comments (6)
prd/skills/publish.md (2)

153-173: Run Vale before copying documentation artifacts.

At Line [153], the new copy-and-stage path applies a Markdown change without the required Vale validation. Run Vale on both 03-prd.md and 02-clarifications.md, then stop before copying or staging if either check fails.

Source: Coding guidelines


34-34: LGTM!

Also applies to: 43-44, 53-55, 205-205, 239-242

design/skills/publish.md (1)

34-34: LGTM!

Also applies to: 43-44, 53-55, 85-108, 312-312

e2e/skills/ingest.md (1)

101-122: LGTM!

implement/skills/ingest.md (1)

92-103: LGTM!

Also applies to: 105-113

design/skills/ingest.md (1)

59-78: LGTM!

Also applies to: 79-97, 99-107, 108-113, 172-172

@adalton
adalton merged commit a605aa5 into main Aug 7, 2026
9 checks passed
@adalton
adalton deleted the andalton/decouple-workflow-artifacts branch August 7, 2026 14:13
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.

2 participants