project-reality-check
Use when comparing a project vision to code reality and turning gaps into tracked work. Triggers:
What this skill does
# project-reality-check — measure the dream against the code, then file the gap Two passes over a project. **Conformance:** does the code do what the README / goals / open issues claim? **Ambition:** if it already did, how could it matter more? Both passes end the same way — not as prose, but as concrete, tracked work items an agent can pick up. ## ⚠️ Critical Constraints - **A gap that isn't tracked doesn't exist.** Every confirmed gap and every accepted ambition idea MUST become a bead (`bd`/`br`), not a paragraph. **Why:** prose findings rot in a report nobody re-reads; a bead enters the ready queue and gets done. - WRONG: "The README promises a `--json` flag but it's missing. (left in the report only)" - CORRECT: `bd create -t bug -p 1 "Implement --json output flag promised in README §Usage"` - **Claims must be verified by execution, not by reading.** "The code does X" is a hypothesis until you run the path. **Why:** a function named `validate_input` may validate nothing; the README may describe an aspiration that was never merged. - WRONG: grep for `def export_csv` → conclude "CSV export works." - CORRECT: run the documented command → observe the actual output → record pass/fail. - **Separate the two passes; never blend gap-fixing with ambition.** Finish the full conformance pass first. **Why:** mixing "this is broken" with "this could be cooler" hides real breakage behind shiny ideas and lets a half-built feature get rebranded as a roadmap. - **The dream is evidence, not gospel.** A documented promise the project no longer wants is a *doc bug*, not a feature gap. **Why:** blindly filing work for every stale README line generates noise; the call is "make code match docs" OR "make docs match code" — decide per gap. ## Why This Exists Projects drift. A README is written at peak optimism; the code is written under deadline. Open issues describe a future that may already be half-built or abandoned. Nobody owns the diff between *stated intent* and *shipped reality*, so it grows silently until onboarding breaks, users hit promised-but-missing features, and the roadmap is a guess. This skill makes that diff explicit and **converts it into the work queue** — the autonomous spec-conformance + roadmap loop. It is the inverse of writing code: instead of "build to spec," it asks "where has the build left the spec behind, and where should the spec reach further?" ## Quick Start ```bash # 1. Gather the dream (intent sources) ls README* docs/ GOALS* ROADMAP* CHANGELOG* 2>/dev/null bd ready && bd list --status open # or: br ready / br list # 2. Gather reality (what's actually here) git -C . log --oneline -20 # build + run the documented entrypoint, then exercise each documented claim # 3. Produce the report, then file beads for every confirmed gap + accepted ambition idea ``` Output lands in `reality-check-report.md`; tracked work lands in the project's issue tracker. ## Methodology ### Phase 1 — Inventory the dream Collect every **stated** claim, with a source pointer for each: - **README** — the promise to users (features, flags, install steps, "it just works" claims). - **GOALS / ROADMAP / PHASE docs** — the promise to the team (where this is going). - **Open issues / beads** — declared-but-unbuilt intent (`bd list --status open`). - **CHANGELOG "unreleased"** — claimed-done-but-maybe-not. Write each as one falsifiable line: *"README §Usage claims `tool sync --dry-run` previews changes without writing."* If you can't make it falsifiable, it's vibes — drop it. **Checkpoint:** you have a numbered list of claims, each tagged with its source. Do not proceed until every major doc has been scanned (use `codebase-archaeology` if the repo is unfamiliar). ### Phase 2 — Verify against reality For each claim, pick the cheapest verification that actually proves it: | Claim type | Verification (in order of strength) | | --- | --- | | CLI flag / command | **Run it.** Observe real output vs. the documented output. | | Feature / behavior | Exercise the code path end-to-end; read the impl only to confirm *why* it failed. | | Install / setup step | Follow it literally in a clean shell; note any undocumented prerequisite. | | Architecture claim | Trace the actual call graph; confirm the named component exists and is wired. | | Performance claim | Measure; never accept a number from a doc. | Record one verdict per claim: **MATCH** (code does what's claimed) · **GAP** (claimed, not delivered) · **STALE-DOC** (code moved on; the claim is wrong now) · **PARTIAL** (some of it). **Checkpoint:** every Phase 1 claim has a verdict backed by an observed command or trace — not a guess. ### Phase 3 — Articulate the gap as work For each non-MATCH verdict, decide the direction and file a bead: - **GAP / PARTIAL** → usually `bd create -t bug` (or `feature`) to *make the code match the dream*. Title states the exact missing behavior + its source: `"Add `--dry-run` preview (README §Usage promises it; command currently writes immediately)"`. - **STALE-DOC** → `bd create -t chore` to *make the docs match the code*, or close the dream. - Set priority by user impact: a broken documented happy-path is p0/p1; an aspirational roadmap item is p2/p3. - Link related gaps so the queue shows the real shape of the work. **Checkpoint:** the report's gap section and the tracker agree — every gap has a bead id. ### Phase 4 — Ambition rounds Now, and only now, push past conformance. Run N rounds (default 3), each asking a sharper question about how the project could matter more: 1. **Round 1 — adjacent usefulness:** what would the *current* users want next? (the obvious missing flag, the integration they keep asking for). 2. **Round 2 — new audience:** who *can't* use this today, and what one change would let them? 3. **Round 3 — leverage:** what would make this a platform others build on, not just a tool (API, plugin surface, machine-readable output, composability)? Each idea gets the same discipline as a gap: a one-line falsifiable description and, if accepted, a bead (`-t feature`, lower priority than conformance gaps). **Reject ruthlessly** — an ambition idea that doesn't survive "would a real user notice?" does not get filed. **Checkpoint:** ambition beads are tagged distinctly (e.g. `--label ambition`) so they never crowd out conformance fixes in `bd ready`. ## Output Specification Write `reality-check-report.md` at the project root with these sections: 1. **Dream inventory** — the numbered claims + sources from Phase 1. 2. **Conformance table** — claim · verdict (MATCH/GAP/STALE-DOC/PARTIAL) · evidence (the command run or path traced) · bead id (for non-MATCH). 3. **Gap summary** — count by verdict; the p0/p1 list called out at top. 4. **Ambition rounds** — accepted ideas with bead ids; rejected ideas with the one-line reason. 5. **Filed work** — a flat list of every bead id created, so the report is a manifest. Every non-MATCH row and every accepted ambition idea MUST carry a real bead id. A report with gaps and no bead ids is a FAIL. ## Quality Rubric - **Verified, not asserted:** every MATCH/GAP verdict cites an observed command or trace, never "the code looks like it does X." - **Tracked, not narrated:** count of non-MATCH verdicts == count of filed gap beads (minus any explicitly-closed stale dreams); zero orphan findings. - **Two clean passes:** conformance fully resolved before any ambition idea is filed; ambition beads are labeled distinctly from gaps. - **Direction decided per gap:** each gap states whether the fix is code→docs or docs→code, not left ambiguous. ## Examples **Conformance gap.** README: `myctl deploy --watch tails logs after deploy.` Reality: `--watch` is an unknown flag (`error: unrecognized argument`). Verdict: **GAP**, p1. → `bd create -t feature -p 1 "Implement myctl deploy --watch (README promises log tailing; flag is unrecognized)"`. **Stale doc.** README: "Config lives in `~/.myctl.t
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.