CtrlK
BlogDocsLog inGet started
Tessl Logo

wagneripjr/doc-this

Reverse-engineer a legacy codebase into ATDD-ready, traceable specifications

69

Quality

86%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

manifest-schema.mdskills/doc-this-scout/references/

Schema — .doc-this/context/file-manifest.json

Generated by Scout (step 7, deterministic command). The ground truth for Total Source Coverage (describe-only pact): every downstream agent and the coverage gate derive their file universe from this manifest, never from memory or ad-hoc listing.

Consumed by: Code Analyst (per-module all_files derivation), Architect (per-page UI entries), Writer (code-spec matrix rows), Reviewer + hooks/doc-this-coverage-gate.mjs (ledger-vs-manifest validation), --backfill-coverage (unread-set computation).

Full structure

Paths, tables and type names in the examples below belong to a fictional orchard-packhouse WebForms application, reused across the doc-this references. They illustrate shape only.

{
  "generated_at": "2026-06-10T14:00:00Z",
  "files": [
    { "path": "Web/packhouse/crate_labels_edit.ascx", "class": "source", "subclass": "markup" },
    { "path": "Web/packhouse/crate_labels_edit.ascx.cs", "class": "source", "subclass": "code" },
    { "path": "Web/packhouse/crate_labels_edit.ascx.designer.cs", "class": "generated", "subclass": "", "reason": "WebForms designer wiring; source-of-truth .ascx read in full" },
    { "path": "db/scripts/V042__indices.sql", "class": "source", "subclass": "sql" },
    { "path": "Scripts/jquery-3.6.min.js", "class": "vendored", "subclass": "" },
    { "path": "Web/img/logo.png", "class": "binary", "subclass": "" }
  ],
  "counts": { "source": 1200, "generated": 400, "vendored": 150, "binary": 200 }
}

Fields

FieldValuesMeaning
pathrelative path from project rootSorted with LC_ALL=C sort for deterministic diffs
classsource | vendored | generated | binaryCoverage class. Only source files are mandatory reads.
subclasscode | markup | sql | other | ""Routing key for the Code Analyst (only meaningful for source).
reasonstring (optional)Required on every entry reclassified away from source — one line explaining why the skip is legitimate (per the pact's exclusion classes).

Coverage semantics

  • class: source → the file MUST be analyzed before Discovery completes ("analyzed" per the pact: LSP skeleton + business-logic read for code with working LSP; full Read for markup/sql/other or when LSP is unavailable).
  • class: vendored | binary → legitimate skip, no read required, still inventoried.
  • class: generated → legitimate skip only when the generator input is read (e.g., .designer.cs excused by its fully-read .aspx/.ascx). A generated file with no read source-of-truth must be reclassified source.
  • There is no "counted but unread" state. Manifest source ∖ coverage-ledger files_analyzed = the pipeline's open debt; the coverage gate denies the next phase while it is non-empty.

Reclassification

The deterministic command classifies by extension/path pattern — a starting point, not gospel. Agents may correct individual entries (jq edit), in both directions:

  • hand-written file matching a generated pattern (e.g., a manually maintained *.designer.cs) → class: source, read it;
  • repo-committed third-party bundle the patterns missed → class: vendored + reason.

Never reclassify to dodge a large read — that is the exact failure mode the manifest exists to prevent, and the Reviewer's gap spot-check looks for it.

jq access recipes (never load the manifest whole)

# Module slice for the Code Analyst (all_files derivation):
jq -r --arg p "Web/packhouse" \
  '.files[] | select(.class=="source" and (.path|startswith($p))) | [.path,.subclass] | @tsv' \
  .doc-this/context/file-manifest.json

# All markup pages (Architect's per-page UI universe):
jq -r '.files[] | select(.subclass=="markup") | .path' .doc-this/context/file-manifest.json

# All source paths (Writer's code-spec-matrix rows; gate's coverage universe):
jq -r '.files[] | select(.class=="source") | .path' .doc-this/context/file-manifest.json

# Counts only:
jq '.counts' .doc-this/context/file-manifest.json

tile.json