Skip to content

feat(prioritize): make command workspace-agnostic (drop pillar-slug + sub-spike requirements)#41

Open
lapc506 wants to merge 1 commit into
mainfrom
andres/prioritize-agnostic
Open

feat(prioritize): make command workspace-agnostic (drop pillar-slug + sub-spike requirements)#41
lapc506 wants to merge 1 commit into
mainfrom
andres/prioritize-agnostic

Conversation

@lapc506
Copy link
Copy Markdown
Collaborator

@lapc506 lapc506 commented Jun 2, 2026

HUMAN LAYER

Summary

The /make-no-mistakes:prioritize command was opinionated against a pillar
taxonomy that's not portable to typical Linear workspaces (per Andrés analysis,
session 2026-06-02 0500 CST). This PR drops the four hard couplings of the
original dogfood design while preserving full backward compatibility with
existing pillars.<slug> configs.

Four coupling fixes

# Old (v1.0–v1.22) New (v1.23+)
1 First arg = required <pillar-slug> validated against pillars.<slug> Optional. Resolves pillars.<slug> (legacy) → projects.<slug> (agnostic) → Linear MCP exact-name match → interactive. Plus --label <name> and --filter <query> as alternative scopes.
2 Sub-spike PIBER+IDCF as required Confidence anchor Optional --evidence <path-or-issue-id> flag. Accepts a Linear issue ID OR a local markdown path. Without it, evidence-driven MoSCoW rules are skipped; Confidence defaults to 0.8.
3 Vision audit auto-discovered at <codebase>/audits/<pillar>/vision-audit-*.md Auto-discovery only in legacy pillar mode. Agnostic mode requires explicit --audit <path> (no flag → no enrichment).
4 Output path hardcoded to <codebase>/audits/<pillar>/priority-<DATE>.md Default is ./priority-<DATE>.md in cwd, with ~/ expansion. --out <path> overrides. Legacy pillar mode keeps the original default.

Backward compatibility table

Invocation Behavior
prioritize pathways (with pillars.pathways in config) Legacy mode — unchanged.
prioritize pathways (with projects.pathways only) Agnostic mode — uses Linear project, no evidence/audit unless flagged.
prioritize agent --evidence APP-101 Agnostic + evidence anchor (Linear issue).
prioritize --label "team/frontend" Agnostic + label scope (no project required).
prioritize --filter "label:Frontend state:Backlog" Agnostic + arbitrary filter.
prioritize (no args) Interactive selection — lists projects from linear-setup.json + MCP.
prioritize pathways --evidence ./vision.md --audit ./audit.md --out ~/p.md Full agnostic with all anchors + custom output.

MoSCoW rule split

Scoring rules now annotated as:

  • evidence-driven — skip when no --evidence was provided (MUST-1..4, SHOULD-1..3, COULD-1..2, WONT-1..2).
  • label-driven — always fire (DECOMPOSE, MUST-5, SHOULD-4, COULD-3..4, WONT-3..4).

New explicit MoSCoW-label rules (MUST-5, SHOULD-4, COULD-4, WONT-4)
give workspaces using moscow/{must,should,could,wont} labels deterministic
coverage without needing an evidence anchor.

Files touched

  • commands/prioritize.md — args + flag surface + workflows + legacy section
  • skills/prioritize/SKILL.md — added "Workspace-agnostic mode (v1.23+)" section, rewrote Paso A/B/E for optional anchors, expanded error table
  • skills/prioritize/references/scoring-rules.md — annotated rules as evidence-driven vs label-driven, added explicit MoSCoW-label rules
  • skills/prioritize/references/linear-mutations.md — generalized "Sub-spike comment" → "Evidence-anchor comment" + agnostic report template
  • skills/prioritize/references/frameworks/moscow-rice.md — updated edge cases 4-8 for agnostic mode
  • CHANGELOG.md — Unreleased entry

Out of scope

  • Deeper UX redesign of the report markdown template (follow-up).
  • New tests — current skill is documentation-driven, has no test suite for the
    command flow; no existing tests cover the pillar-slug path either, so
    nothing to regress.
  • Touching dogfood linear-setup.json configs (none in this repo).

AGENT LAYER

Acceptance criteria

  • prioritize pathways (legacy pillars.pathways config) still works as before.
  • prioritize with no args enters interactive selection (no pillar-slug error).
  • prioritize --label "x" and prioritize --filter "y" are accepted as valid scopes.
  • --evidence, --audit, --out, --codebase are all optional, with documented defaults.
  • --evidence accepts both a Linear issue ID and a local file path.
  • Agnostic default output is ./priority-<DATE>.md in cwd; legacy is <codebase>/audits/<pillar>/priority-<DATE>.md.
  • Without --evidence, evidence-driven MoSCoW rules are skipped; label-driven rules continue to fire.
  • Without --audit, RICE Confidence defaults to 0.8.
  • Snapshot comment is posted on the --evidence Linear issue when it is an issue ID; skipped for local files or absent evidence; legacy mode still targets pillars.<slug>.spike.
  • CHANGELOG [Unreleased] entry documents all four coupling fixes.

Context files

  • commands/prioritize.md — entrypoint with the new arg parsing rules.
  • skills/prioritize/SKILL.md — full skill flow with optional-anchor branches.
  • skills/prioritize/references/scoring-rules.md — evidence-driven vs label-driven rule families.
  • skills/prioritize/references/frameworks/moscow-rice.md — RICE formula + agnostic edge cases (4–8).
  • skills/prioritize/references/linear-mutations.md — generalized comment + report template.

Decision rationale

  1. Why preserve pillars.<slug> as legacy mode rather than delete it?
    The author dogfooded the command against two production pillars in early
    2026; deleting that path silently would break those configs. Keeping it as
    the first resolution step costs no UX (users with projects.<slug> only
    never see it) and gives a clear migration runway.

  2. Why accept both Linear issue ID and local markdown for --evidence?
    A PRD/spec/vision doc often lives outside Linear (Notion export, repo doc).
    Forcing it to be a Linear issue would reintroduce the "must own a sub-spike"
    coupling we're explicitly removing.

  3. Why split rules into evidence-driven vs label-driven instead of dropping
    evidence-driven rules entirely?

    The killshot-thesis / anti-pattern / P0-feature rules are the highest-
    signal rules in the engine when an anchor exists. Dropping them would
    regress the dogfood pillars. Annotating them lets the runtime cleanly skip
    them when no anchor is supplied.

  4. Why default output to cwd instead of a temp dir or ~/.cache?
    Reports are meant to be committed alongside the codebase / Linear backlog
    snapshot. Cwd default lets the user git add priority-*.md directly.

Constraints honored

  • No force push (Andrés memory feedback_never_force_push_without_authorization).
  • No secrets or .env touched.
  • One PR = one thing (only the prioritize command/skill surface).
  • Worktree isolation: all work in .wt-prioritize-agnostic/.
  • No existing tests deleted (none cover the pillar-slug flow to begin with).

Created by Claude Code on behalf of @lapc506.

… sub-spike requirements)

Drops the four hard couplings of the original dogfood design while preserving
full backward compatibility with existing pillars.<slug> configs:

1. Scope: first positional arg is now optional. Resolution order is
   pillars.<slug> (legacy) -> projects.<slug> (agnostic) -> Linear MCP
   exact-name match -> interactive. New --label / --filter scope flags.
2. Evidence anchor: optional --evidence <path-or-issue-id> flag accepts a
   Linear issue ID OR a local markdown path. Without it, evidence-driven
   MoSCoW rules are skipped and RICE Confidence defaults to 0.8.
3. Vision audit: auto-discovery only fires in legacy pillar mode. Agnostic
   mode requires explicit --audit <path>.
4. Output path: default is ./priority-<DATE>.md in cwd. Override with --out.
   Legacy pillar mode keeps the audits/<pillar>/ default.

Also splits MoSCoW scoring rules into evidence-driven (skip when no anchor)
vs label-driven (always fire) families, and adds explicit
moscow/{must,should,could,wont} label rules so workspaces using MoSCoW labels
get deterministic coverage without an evidence anchor.

Rationale: the original command was opinionated against a pillar taxonomy
that does not exist in typical Linear workspaces (per Andres analysis,
2026-06-02). Dogfood configs continue to work unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copy link
Copy Markdown

@dojo-code-reviewer dojo-code-reviewer Bot left a comment

Choose a reason for hiding this comment

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

✅ Approved

Approved — 0 blockers, 2 P3. Confidence: 4/5.

🔵 P3 — Minor

  • skills/prioritize/SKILL.md:258 — 🔵 P3 (minor) — The reference to the comment template is outdated. It points to "Sub-spike comment template", but that section has been renamed to "Evidence-anchor comment template" in references/linear-mutations.md.
  `references/linear-mutations.md` "Evidence-anchor comment template".
  • skills/prioritize/references/linear-mutations.md:209 — 🔵 P3 (minor) — There is an outdated reference in the ## Mutation failure handling section (around line 290) that still refers to "Sub-spike comment template". Please update that mention to "Evidence-anchor comment template" so that it matches the newly renamed heading in this file.

Total findings: 2 business context (2 total)


ℹ️ The findings below could not be anchored to a diff line (line not part of any hunk); they are listed here instead.

  • skills/prioritize/SKILL.md:258 — 🔵 P3 (minor) — The reference to the comment template is outdated. It points to "Sub-spike comment template", but that section has been renamed to "Evidence-anchor comment template" in references/linear-mutations.md.
  `references/linear-mutations.md` "Evidence-anchor comment template".

@@ -201,13 +209,21 @@ First priority snapshot. No comparison available.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 P3 (minor) — There is an outdated reference in the ## Mutation failure handling section (around line 290) that still refers to "Sub-spike comment template". Please update that mention to "Evidence-anchor comment template" so that it matches the newly renamed heading in this file.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant