| name | pitch-deck-metrics |
| description | Use when the user asks for pitch-deck metrics, funding/leadership talking points, a campaign scoreboard, or to (re)build/refresh progress-tracker/pitch-deck-metrics.md. Deterministically harvests headline numbers from the campaign's derived artifacts (executive summary, validation/fuzz dashboard, threat register, progress-tracker control files) and the harness's own tree/git metadata into one consistently-updatable Markdown scoreboard. |
Pitch-Deck Metrics
Maintain one Markdown scoreboard — progress-tracker/pitch-deck-metrics.md —
holding every number the team quotes in funding pitches, leadership decks, and
status reports, so those numbers are regenerated from the pipeline's own
artifacts instead of being copied around and going stale.
The skill never authors a metric. collect_pitch_metrics.py parses each value
from a generated artifact (or counts it from the harness tree) and cites the
source next to it; anything it cannot find renders as "—" and is flagged in
the data-freshness table. Narrative claims no artifact can compute live in a
manual block that survives regeneration.
Input
$ARGUMENTS is optional and may be any combination of:
| Token | Meaning |
|---|
--workspace-root <dir> | Parent workspace holding the sibling repos (default: the harness checkout's parent) |
--out <file> | Output path (default: progress-tracker/pitch-deck-metrics.md) |
--refresh-sources | Before collecting, rebuild stale upstream artifacts (see step 2) |
Procedure
-
Run the collector:
python3 ai-security-harness/harnessing/pitch-deck-metrics/collect_pitch_metrics.py
It writes the scoreboard and exits non-zero if any source artifact is
missing (the file is still written, with the gaps flagged).
-
Check the Data freshness table in the output. Each source row shows the
artifact's own Generated: date. If a source is missing, or older than the
latest audit activity and the user asked for --refresh-sources (or asks
for current numbers), rebuild it with the owning skill first, then rerun
the collector:
| Stale source | Rebuild with |
|---|
analysis-results/Executive-summary-findings.md | /executive-summary-findings |
analysis-results/Live-validation-fuzz-dashboard.md | /validation-fuzz-dashboard |
analysis-results/threat-register/threat-register.md | /threat-register |
progress-tracker/tracking/opened-tickets.md, processed-results/ | maintained by the routing/filing skills — report staleness, do not rebuild |
-
Report back. Read the generated file and give the user the headline
numbers grouped as the file groups them (scale, impact, validation,
delivery, maturity), calling out: any MISSING sources, any source whose
Generated: date is more than ~a week old, and any metric that moved
sharply since the previous version of the file (use git -C progress-tracker diff pitch-deck-metrics.md when the file is tracked).
-
Manual talking points. The <!-- MANUAL:BEGIN/END --> block is
preserved verbatim across runs. If the user supplies narrative claims
(cost comparisons, remediation stories, the ask), edit them inside that
block only — never hand-edit generated rows; fix the upstream artifact
instead.
Output
progress-tracker/pitch-deck-metrics.md — sections: Scale & coverage ·
Findings & impact · Empirical validation · Delivery & adoption · Platform
maturity & reliability · Manual talking points (preserved) · Data freshness.
Notes
- Deterministic at metric time: like the dashboards, this skill only
replays already-derived artifacts — no model call participates in producing
a number, so reruns are reproducible and diffs are meaningful.
- The maturity metrics (version, commits, releases, LoC, test count) are
counted live from the harness checkout, so they are correct even when no
campaign artifact has been rebuilt recently.
- Severity counts quote the executive summary's totals (occurrences) and note
unique counts alongside, matching how that report itself leads.