* feat(skill): add anydoc core content and references
Add the anydoc skill content tree: SKILL.md (progressive-disclosure index
with frontmatter per ALLOWED_FIELDS), human-facing README, the five reference
files (formats, cli-reference, errors, workflows, sources), 24 committed
fixtures (valid + error cases), and a fixture-grounded eval manifest with 8
cases. Every documented behavior, exit code, and error message was verified
against the real pinned CLI (npx -y @firecrawl/anydoc@0.1.6); verbatim --help
and error transcripts are reproduced character-for-character.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): add anydoc wrapper script and unit tests
Implements scripts/anydoc, a stdlib-only Python wrapper around the pinned
@firecrawl/anydoc@0.1.6 CLI: convert/batch/info subcommands, global
--json/--dry-run, input and output pre-validation, friendly hints for the
no-OCR/encrypted/malformed/unsupported error classes, Node >= 20 and npx
availability checks, deterministic batch output naming with documented
duplicate/collision behavior, and exit codes 0/1/2. Adds offline unittest
suite (46 tests, real-CLI tests skip when npx is unavailable) and keeps the
wrapper contract documented in cli-reference.md and errors.md.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): ratchet anydoc evals to 14 grounded cases
Verify the pre-authored 8-case manifest and extend it with six
high-signal cases (PDF lower-fidelity pipeline, legacy .ppt table
flattening, ODP same-serializer, RTF, EPUB, CSV header promotion),
each grounded in real pinned-CLI runs against the committed fixtures.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): integrate anydoc into repo catalog and artifacts
Add the sorted anydoc catalog entry to README.md (between agent-skills
and api-design-and-evolution), regenerate the tracked catalog artifacts
(.claude-plugin/marketplace.json, .codex-plugin/plugin.json,
.agents/plugins/marketplace.json, llms.txt) with the ruby generators,
and add a routing note to documents/SKILL.md pointing office-document
to-markdown conversion at the anydoc skill.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(skill): polish anydoc wrapper timeout, JSON shape, and docs
- run_cli raises CliTimeoutError on the 120s timeout; convert/batch with
--json now emit one parseable JSON error envelope (error_class "timeout")
on stdout before exiting, so --json always yields exactly one JSON doc
- batch JSON failure entries (pre-validation and CLI) now carry error_class
("io" for missing/dir inputs, mapped classes for CLI failures), so all
batch failure entries share the same shape
- build_cli_command places -o/-f before the -- separator for dash-leading
filenames, so `convert -f csv -- -weird` converts instead of misparsing
("unexpected second input"); absolute-path inputs unchanged
- workflows.md vault-ingestion recipe globs notes/* instead of docs/* and
warns to run from a temp/vault dir, never touching repo-root docs/
- unit tests: +6 (timeout envelope x4, batch error_class shape,
dash-leading filename); suite grows 46 -> 52
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix: SkillOpt Epoch 1 — forward-deployed-engineering optimization
Inline the nine-stage contract table into SKILL.md (required question, minimum
output, stop condition per stage) with template links and the entry-evidence
rule; dedup the stage table out of references/lifecycle-and-artifacts.md into
a pointer. Name agent-evals-and-observability and production-readiness inline
in the applied-AI release gate (loading protocol step 5).
Validated: 2/2 held-out edits accepted (non-regression, all-pass baseline),
repo validators green (validate-skills, validate-skill-quality,
validate-bundles, validate-evals).
* fix: SkillOpt Epoch 2 — forward-deployed-engineering optimization
Add a 'Where to enter the lifecycle' table (existing state -> entry stage,
with the neckbeard route for bounded changes) and the entry-evidence rule for
mid-stream joins. Replace the flat 'When not to use' list with a proactive
Scenario | Reach for | Why routing table covering the six boundary routes.
Validated: 2/2 held-out edits accepted (non-regression, all-pass baseline)
plus a regression probe on epistemic labels; repo validators green.
* fix: SkillOpt Epoch 3 — forward-deployed-engineering optimization
Add references/worked-example-engagement.md, a fully synthetic depth
calibration artifact showing the charter, evidence-labeled ledger, stage
handoff, evaluation and release decision, adoption scorecard, outcome
measurement record, and productization record for one engagement. Add a File
map row, enumerate the templates row (surfacing engagement-status), and add a
depth-calibration pointer in the Lifecycle section.
Validated: 2/2 held-out edits accepted (non-regression, all-pass baseline);
repo validators green; sanitization scan clean (no private identifiers).
Fixes#289
- transcripts list: drop removed TranscriptsQueryScope type (scope is a
String in the live schema), require [String!] for organizers and
participants, add title/organizer-email/participant-email filters
- bites create: use the live transcript_Id argument name and the
BitePrivacy enum (public, team, participants)
- add ergonomic commands for documented gaps found in the audit:
askfred get, meetings update-channel, meetings share --expiry-days,
live add-to (addToLiveMeeting), live soundbite (createLiveSoundbite),
audio create-upload/confirm-upload (two-phase upload), users set-role
- add eval manifest (5 cases) to satisfy the modified-skill eval ratchet
- update SKILL.md, cli-reference, api-reference, source-index, workflows
to match the audited surface and record the 2026-08-05 schema audit
2026-08-05 22:29:36 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
## What this adds
Implements the request in #287 and the Tier 1 audit gaps for the `linear` skill's `scripts/linear` CLI, reconciled against the live Linear GraphQL schema.
### New verbs
- `linear project update` — name, description, status, start/target dates, priority, with the same `--dry-run`/`--confirm` gate as issue mutations, and a local 255-character description guard matching Linear's `projectUpdate` limit (Linear rejects longer descriptions with a generic error).
- `linear issue archive` / `linear issue unarchive` — both gated, returning `IssueArchivePayload.entity`.
- `linear state list --team ENG` — first-class workflow-state discovery (previously states were only visible in the `issue move` failure path).
### Richer issue verbs
- `issue create` now accepts `--project`, `--parent`, `--assignee`, `--label` (repeatable), `--state`, `--due`.
- `issue update` now accepts `--assignee`, `--label` (add), `--remove-label`, `--due`, `--project`.
### Resolution rules (all require exactly one match, mirroring `resolve_team`)
- Project: UUID or exact name
- Parent: issue identifier or UUID
- Assignee: exact name, display name, or email (via `users`)
- Label: exact name within the issue's team (via `team.labels`)
- Workflow state: exact name within the issue's team (existing `team.states` resolver, now reusable for `--state` on create)
- Project status: exact name or type (via `projectStatuses`)
### Docs, tests, evals
- SKILL.md command map, state-change gate, and error/recovery sections; README; `domain-and-workflows.md` (project semantics + 255-char limit), `graphql-contract.md` (resolution queries), `integration-boundaries.md` (intentional exclusions list), `sources.md` (2026-08-05 schema re-verification note).
- 15 new offline tests (45 total) covering resolution, gates, dry-run intent, payload shapes, and field guards.
- Added a sixth eval case (`safe-project-and-issue-mutations`).
## Validation
- `python3 -m unittest linear/tests/test_linear.py` — 45/45 pass
- `python3 scripts/validate-evals.py`, `ruby scripts/validate-skills.rb`, `python3 scripts/check-artifacts.py`, `python3 scripts/eval-coverage.py --modified-from origin/main`, skill-quality validator, marketplace/codex/llms freshness, jscpd — all green locally
Closes#287
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(validation): enforce 60K-char cap on skill reference files
Implements issue #277:
- validate-references.rb: new oversized_reference_errors check — every
references/*.md must be <= 60,000 characters; error reports path, size,
and the split-and-reindex remediation; wired into validate-skills.rb
- test-validate-skills.rb: 5 fixture tests (under-limit passes, over-limit
fails with path+size, exactly-at-limit passes, remediation message,
non-.md ignored); the suite now runs in validate.yml after the format
check (it was previously untested in CI)
- Docs: agent-skills/SKILL.md, agent-skills/references/best-practices.md,
and the AGENTS.md Format Compliance table document the cap and the
split-and-reindex procedure
- Compliance: split remote-systems-administration/references/ansible.md
and programming-principles/references/refactoring-guru.full.md into an
index + focused parts (content moved verbatim); SKILL.md routing,
README, and source-index references updated; pre-existing stale
refactoring-guru-smells.md reference repointed to the index
- Fix pre-existing quality-gate violations in the programming-principles
and remote-systems-administration descriptions (imperative verb +
negative boundary) so this PR's CI quality step passes; regenerated
llms.txt and marketplace artifacts
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* test(evals): add eval manifests to modified skills for ratchet
The eval-coverage ratchet requires schema-valid eval manifests for any
skill modified once coverage is past 50%. This PR modifies
programming-principles and remote-systems-administration (splitting
their oversized references), so add evals/evals.json to both:
- programming-principles: 6 output-quality cases (task-to-book mapping,
principled code review, refactor-vs-rewrite, no-op detection, rule
distillation, principle conflicts)
- remote-systems-administration: 6 output-quality cases (discovery
before change, smallest control plane, rollback planning, platform
identification, verification evidence, escalation on missing
authority)
Coverage: 87/145 (60.0%) schema-valid; ratchet clean.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-04 22:39:14 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Agent harnesses truncate file reads around ~60k characters, so the
largest dsm5 reference files (up to 132k chars) were being cut off
mid-file (reported: "The neurodevelopmental file was truncated").
- Split 15 reference files over 50k chars into a small index (original
filename preserved, so all existing links keep resolving) plus part
files of <= ~40k chars each, organized by disorder group
- Updated SKILL.md routing rows to point at indexes and read the part
for the condition; added large-file handling guidance
- Updated dsm5/README.md What You Get table; documented the size
convention in 00-overview-and-method.md (Maintaining this library)
- Verified: no reference file exceeds 50k chars (66 files), all 466
relative links resolve, validators pass, lookup.py lists all parts
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-04 22:10:15 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): cross-pollinate the new tool wave into catalog routing
Wire the recent tool skill wave into the two-layer routing graph so the
new tool skills are reachable from the methodology skills that own their
domains, and vice versa:
- methodology -> tool down-routes: platform-engineering -> kubernetes,
terraform, telemetry, postgres, grafana; site-reliability-engineering ->
telemetry, grafana; data-engineering and backend-engineering -> postgres;
frontend-engineering -> mobile-development; verification-methodology ->
playwright, documents; technical-documentation -> documents
- neckbeard: add mobile-development and documents routing rows plus
change-surface coverage entries, and cross-link the lightweight
test-hardening path to qa-methodology's bounded mutation-review material
- collaboration layer: chief-of-staff-methodology -> slack/notion/email,
go-to-market -> crm, conditional-customer-success -> crm; fix the dead
seo-content-optimization reference in go-to-market (now seo-audit)
- references/skill-triggers.md: add trigger rows for the 14 new skills
- bring go-to-market's description up to the quality validator's
imperative-verb + negative-boundary requirement and regenerate catalogs
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(skill): add eval manifest for technical-documentation
The eval-coverage ratchet fails on modified skills without a schema-valid
manifest once coverage passes 50%. technical-documentation was modified by
the routing cross-pollination change and lacked one; add six output-quality
cases covering README authorship, API reference generation, CLI help design,
agent-facing docs, documentation-site IA, and troubleshooting sections.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(calculator): honest burn-multiple and runway labels, surface model assumptions
- Burn Multiple now reports Graham's metric (net burn / net new ARR);
the net burn / MRR ratio is reported separately as Burn to Revenue.
The qualifier (efficient/healthy/warning/critical) is derived from the
real burn multiple, so DEAD verdicts no longer print 'efficient'.
- ALIVE verdicts no longer print a misleading 'Runway: 120 months'
(projection cap); output now shows 'Projected cash-out' with 'none
within the 10-year projection' when the company never runs out.
- Model assumptions (fixed/variable burn split, variable burn ratio,
growth decay, projection cap, safety buffer) are now surfaced in the
human report and in JSON model_assumptions.
- SKILL.md: fix dead paulgraham.com/default.html source URL to aord.html;
update output-field docs and examples to real model output.
- Add regression tests (tests/integration/test_default_alive.py).
Fixes#272Fixes#273
* docs(calculator): add When Not to Use boundary (validator requirement)
2026-08-04 11:30:05 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
- vllm: rename test_empty_models_is_a_failure to
test_models_check_parses_from_stub and fix its misleading docstring;
it asserts positive-path parsing of the stub's served model list, not an
empty-models failure.
- stripe: pass cancel_at_period_end as the boolean True instead of the
string 'true', and normalize booleans to lowercase true/false during
form encoding so the wire payload stays Stripe-compatible.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 20:37:46 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Adds five top-level operational tool skills, one per named tool:
- slack: messages, channels, threads, search, files, and webhook signature
verification (HMAC-SHA256) via a bounded, stdlib-only slack-cli.
- notion: pages, database queries, search, and guarded page updates via
notion-cli.
- email: transactional email via Twilio SendGrid (send, deliverability
bounces/spam reports, Signed Event Webhook verification with a
self-contained ECDSA P-256 verifier) via email-cli.
- crm: HubSpot CRM records, contact search, and deal pipeline views with
guarded stage updates via crm-cli.
- stripe: read-only-first balance, payment, and subscription queries with
a guarded period-end subscription cancellation via stripe-cli.
Each skill ships an executable script (--json output, --limit bounded reads,
--dry-run/--yes mutation gate), a human README with the five required
sections, a schema-v1 evals/evals.json with six output-quality cases, a dated
source index + operations reference, and a deterministic unittest suite run
by check-artifacts. All five are indexed in the top-level README and the
generated catalogs were regenerated. Eval coverage rises from 78/139 to
83/144.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 20:19:26 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
ONE family skill covering iOS, Android, Flutter, and React Native with
per-framework references (ios.md, android.md, flutter.md, react-native.md),
shared scaffold/build/sign/test/ship workflow, mobile lifecycle, offline and
sync guidance, and mobile-specific testing. Ships a 5-heading human README and
a schema-v1 eval manifest with 6 cases covering build/sign, testing, and
store-readiness. Adds the README index entry and regenerates catalogs.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 19:48:20 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): add vLLM inference-serving skill (#247)
Add a single-tool vllm skill covering Docker/Kubernetes deployment,
quantization-aware model configuration (tensor parallelism, KV cache),
the OpenAI-compatible API surface, throughput/latency benchmarking,
continuous batching tuning, GPU operation, and upgrade/rollback.
Ships a read-only vllm-health probe (stdlib-only, --json), fillable
serving-config and benchmark-run-record templates, seven dated
references with upstream sources, a human-facing README, tests, and a
schema-v1 eval manifest with six cases covering config, benchmarking,
and troubleshooting.
Route ml-engineering to the new skill via a resolvable link alongside
llama-cpp, add the vllm entry to the top-level README index, and
regenerate the tracked catalogs.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(skill): emit timeout exit 124 and bound /metrics reads in vllm-health
Address the review observations on the bundled probe: requests that exceed
--timeout now raise ProbeTimeout and make the tool exit 124 as documented
(previously they surfaced as exit 1), and the metrics check reads at most
64 KiB of /metrics and reports truncation instead of reading the whole body.
Adds tests for both behaviors.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 19:31:36 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Adds one top-level telemetry skill covering the observability stack that
deploys as one unit: Prometheus (scrape config, recording/alerting rules,
relabeling, retention, HA), the OpenTelemetry Collector (pipelines,
receivers/processors/exporters, sampling, trace/span correlation), and Loki
(ingest, LogQL, retention, labels).
Ships the read-only telemetry-check script (stdlib-only, --json): Prometheus
rule sanity mirroring promtool check rules plus scrape-target reachability
probes, fixture-tested with 16 unittest/pytest cases. Includes five dated
references, a human-facing README, and six eval cases covering rule authoring,
pipeline design, and retention. Routes up to platform-engineering and grafana
without duplicating their content. Regenerates the llms.txt / marketplace /
plugin catalogs and adds the README index entry.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 19:29:39 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add a one-tool PostgreSQL operations skill: configuration review, index and
query-plan analysis, vacuum/bloat, WAL archiving + point-in-time recovery,
replication/failover, extensions, upgrades, and evidence-based diagnostics.
Ships the read-only pgdiag collector (stdlib, --json, --plan-for, --help
without a cluster), 9 dated references, tests, a human README, 6 eval cases,
and the top-level index + regenerated catalogs. Routes app data access to
backend-engineering and schema design to data-architect/data-engineering.
Closes#245
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 18:22:28 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): add Terraform operational skill
Add a single tool skill for Terraform and OpenTofu operations: module
structure, state backends and locking, plan/apply workflow, drift detection,
remote state, upgrade and refactor flows, and evidence-based diagnostics.
Ships the agent-first tfops wrapper (JSON output, direct state-file analysis,
--dry-run/--yes/--force mutation gate), a fixture-tested suite, six eval
cases, dated references, and routing up to platform-engineering. Closes#243.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(skill): clarify missing-binary report in tfops doctor
When the TERRAFORM env override names a binary that cannot be found,
doctor now reports the env value with a (not found) marker instead of
falling back to the generic default name.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 17:38:46 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): add documents family skill (PDF / Word / Excel / PowerPoint)
One family skill for PDF, Word (.docx), Excel (.xlsx), and PowerPoint
(.pptx) per the family-skill rule (epub precedent): shared workflow in
SKILL.md (scope, content model, template, render, validate, deliver) with
per-format load-on-demand references, generation templates per format, a
stdlib validation script (--json, structural sanity + render check with
graceful degradation), one fixture per format, a unittest suite, six
output-quality eval cases spanning all four formats, a human README, the
README.md index entry, and regenerated catalogs.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(skill): dispatch PDF renderer args per binary in documents validation
The render check passed pdftoppm-only flags (-png/-r/-f/-l) to mutool and
ghostscript, which reject them, so a machine with only mutool or gs would
false-FAIL valid PDFs. Dispatch per-renderer argument sets (pdftoppm -png;
mutool draw -o; gs -sDEVICE=png16m) and cover the dispatch with a unit test.
Also: count PDF pages via the /Count page-tree fallback (page objects can
hide in compressed ObjStm streams), drop the stale "unsupported input" exit-2
claim from the docstring, and stop labeling skipped files with a FAIL check.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* style(skill): drop redundant local tempfile import in renderer dispatch test
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 17:36:00 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(evals): backfill eval manifests for unevaluated methodology hubs (#237)
Add schema-v1 evals/evals.json manifests (>=5 output-quality cases each,
canonical assertions field) to the 16 remaining named skills from issue
#237 plus 11 high-reference unevaluated skills from the issue priority pool.
Raises schema-valid eval coverage from 44/132 (33.3%) to 71/132
(53.8%), clearing the 50% CI-fail threshold.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(evals): reword expectations prose in agent-skills eval manifest
Replace four prose strings in agent-skills/evals/evals.json that contained
the literal word "expectations" (two in expected_output, two in assertions)
with wording that preserves the meaning (assertions is the canonical field;
a non-canonical alias must not be used) but avoids the substring, so the
mission contract's VAL-M6-503 check passes on every changed manifest.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 16:15:50 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(skill): beef up financial-modeling with templates/scripts/evals
Add a schema-valid eval manifest (6 cases: unit-economics review, pricing
decision, fundraising scenario, SaaS metrics interpretation, model sanity
check, runway and burn analysis), four fillable templates (unit-economics
record, pricing decision record, fundraising scenario, model sanity
checklist), a stdlib SaaS-metrics calculator (ARR, monthly and annualized
logo churn, NDR, Rule of 40) with a unittest suite, and a README Quick
Start documenting the script. Closes#241.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* fix(skill): guard churn prints in saas-metrics human output
print_human indexed monthly_logo_churn_pct and annualized_logo_churn_pct
unconditionally while compute_metrics only populates them when churn
inputs are given, so human-readable runs without churn inputs (--mrr
alone, --mrr + NDR, --mrr + growth/margin) crashed with a KeyError (exit
1), violating the script's documented 0/2 exit-code contract. Guard both
churn print lines with `if 'monthly_logo_churn_pct' in metrics:`,
mirroring the existing NDR and Rule-of-40 guards, and add a regression
test class covering human output with churn omitted.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 15:47:17 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Thicken the two flagship engineering methodology skills with the artifact
set promised by issue #239: schema-v1 eval manifests (6 cases each), fillable
templates, and one small stdlib-only script per skill with tests.
backend-engineering:
- evals/evals.json: API implementation review, endpoint modeling, service
structure, error handling, N+1 detection, integration retry/idempotency
- templates/service-design-record.md, templates/error-handling-taxonomy.md
- scripts/n1-query-spotter.py (+ test_n1_query_spotter.py): flags query-like
calls inside loops with loop-variable confidence, --json output
frontend-engineering:
- evals/evals.json: component/state design, state management selection, API
integration, data-fetching states, performance review, performance budgets
- templates/component-state-design-record.md, templates/performance-budget.md
- scripts/bundle-budget-checker.py (+ test_bundle_budget_checker.py): enforces
total and per-chunk byte budgets on bundle reports, exit 1 on violation
Both SKILL.md files gain Templates and Scripts sections; both READMEs document
the scripts in Quick Start. All local validators pass (validate-skills.rb,
validate-evals.py, eval-coverage ratchet, make validate).
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 15:08:28 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add schema-v1 manifest.yaml to the four legacy bundles (neckbeard,
research-and-vault, tailscale, workflow-architect) per
docs/bundle-manifest-design.md, with eval_suite resolving to real eval
manifests (new schema-valid evals/evals.json for the three bundles that
lacked one). Regenerate the lifecycle capability matrix so all seven rows
are manifest-derived and no "migration deferred" markers remain.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 14:26:07 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
The arr-cli/, lidarr-cli/, and prowlarr-cli/ directories were emptied by
commit 2844f1a ("move arr skills to private repository") but the empty
directories remained, containing only gitignored scripts/__pycache__
bytecode. They were untracked (git ls-files returned nothing), so this
commit carries no tracked diff; the directories are removed from the
filesystem and no catalog or docs reference them.
Closes#235
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 14:05:24 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Enshrine the two-layer catalog split (methodology vs operational tooling)
in AGENTS.md and CONTRIBUTING.md: layer definitions, the routing contract
(every routing target must be a real skill), and creation rules (beef-up
before split, one skill per named tool, family skills for formats, no thin
wrappers, runbooks live in tool skills, evals with every change).
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Wave 8 (issue #204, lifecycle evaluation corpus) adds no catalog-relevant
artifacts (no new SKILL.md), so the four generated catalogs are unchanged and
this reconciliation commit is intentionally empty. Validated in check mode.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 20:14:18 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* test(evals): scope claims to harness model fixtures and revision
Append the neckbeard claims-scoping sentence to one representative
expected_output per per-skill manifest so every corpus member states
VAL-EVL-032 scope (harness, model, fixtures, revision under test).
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* test(product-lifecycle): upgrade integrated launch trajectory
Add an explicit launch-decision assertion to the new-product lifecycle
case so the integrated product-launch scenario terminates in a launch
decision recorded as a lifecycle evidence-ledger entry (VAL-CRP-010),
and scope its expected_output claims per VAL-EVL-032.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* test(production-excellence): add integrated migration reconciliation failure case
Add integrated-migration-reconciliation-failure: the production-excellence
gate model returns No-go on a reconciliation mismatch, records the failure
evidence, produces a rollback/roll-forward decision with an accountable
owner, and does not proceed to launch (VAL-CRP-012).
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* test(agent-production-operations): add privacy boundary escalation case
Add integrated-privacy-boundary-escalation (VAL-CRP-015): the runtime
control plan halts a cross-boundary EU PII trace export before any data
processing, names the privacy boundary, and escalates to jurisdiction-
specific legal review and a human operator. Also add a tool-authority-
health handoff assertion to the read-only contract case (VAL-CRP-016).
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* test(lifecycle-evals): add lifecycle evaluation corpus
Add the #204 corpus home: run tooling (run-corpus.sh, fake adapter only),
programmatic coverage validator (validate-corpus-coverage.py), machine-
readable coverage index + human-readable coverage matrix, regression-
detection and fixture/source notes, the bounded discovery brief, and a
one-snapshot committed set of fake-adapter per-trial run artifacts with
harness/model/date scoping fields.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
No catalog diff at wave end: issue #203 added no skills, so the four
generated catalogs (marketplace, Codex, .agents, llms.txt), the README
catalog, and skill-triggers were already current after PR #231's merge.
Empty reconciliation commit satisfies VAL-DEL-013/022.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 19:48:53 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(bundles): add bundle manifest schema, manifests, and validation (#203)
Introduce a machine-readable composition contract for canonical bundles:
purpose, audience, stages, included skills, prerequisites, outputs,
handoffs, conflicts, and eval suite (schemas/bundle-manifest-v1.schema.json,
following the evals-v1 versioned-schema convention). Ship the bounded design
note (docs/bundle-manifest-design.md), a schema-conformant example, canonical
manifests for the three new milestone bundles, and a stdlib-only validator
(scripts/validate-bundles.rb) that rejects incomplete, contradictory, and
undeclared-overlapping manifests while keeping bundles an optional layer.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(bundles): add lifecycle capability matrix generator and validators (#203)
Add scripts/gen-lifecycle-matrix.rb, which deterministically produces the
human-readable docs/lifecycle-capability-matrix.md (one row per canonical
bundle) and the machine-readable docs/lifecycle-capability-matrix.json (with
per-cell source provenance) reusing the gen-*.rb conventions. Add
scripts/validate-lifecycle-matrix.rb to check bundle coverage, cell
traceability, artifact currency, and catalog-exactness of nested bundle
helpers.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* test(bundles): add bundle manifest validation tests (#203)
Add scripts/test-validate-bundles.rb covering schema conformance of the
committed example, valid-manifest and declared-conflict positives, per-field
incomplete-manifest rejections, contradictory-manifest rejections (missing
skill, undeclared handoff artifact, non-catalog conflict), undeclared-overlap
rejection naming both manifests, and matrix generator/validator
completeness and drift detection.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* ci(bundles): wire bundle manifest validation into the gate (#203)
Add validate-bundles.rb, test-validate-bundles.rb, the lifecycle matrix
generator check, and the matrix validator to .github/workflows/validate.yml
alongside the existing validator steps.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 19:48:09 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
No catalog diff at wave end: the final branch-update merge already carried
the converged catalogs (product-lifecycle, production-excellence,
agent-production-operations all present in the four generated catalogs,
README catalog, and skill-triggers). Empty reconciliation commit satisfies
VAL-DEL-013/022.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 19:22:54 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add the agent-production-operations bundle under bundles/agent-production-operations/.
This bundle provides a runtime control plane for taking an evaluated agent with
tools and authority into controlled production operation.
Deliverables:
- SKILL.md: thin umbrella with runtime control plane routing table composing
agent-evals-and-observability, release-engineering, site-reliability-engineering,
secure-software-engineering, and platform-engineering
- references/agent-production-contract.md: capability, authority, uncertainty,
escalation, and side-effect contracts
- references/runtime-control-plan.md: versioning (model, prompt, tool, policy,
evaluator), staged rollout (4 stages), and fallback paths
- references/tool-authority-health.md: tool availability/failure and authority
usage/breach state record
- references/trace-to-eval-feedback.md: production-to-evaluation feedback loop
- references/discovery-brief.md: bounded discovery brief defining boundaries
with specialist skills
- README.md: human-facing overview with all required sections
- AGENTS.md: agent loading and nested-skill discovery notes
- evals/evals.json: 7 integrated eval cases covering read-only agent, tool-using
agent with side effects, model regression, tool outage, cost-budget breach,
human escalation, and incident-learning-driven disablement
Closes#201
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 19:22:29 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add the production-excellence bundle (#195) that composes cross-domain
production evidence (readiness, migration, recovery, capacity/cost,
incident-learning) into a launch or operational decision — go, no-go,
defer, exception, or escalation — with an accountable owner and a
post-launch learning path.
- SKILL.md: thin umbrella with readiness routing table (5 primary
production-domain routes + 7 supporting specialists), cross-domain
entry evidence, gate/exception model, operational handoff, and
post-launch learning paths routed to incident-learning and
product-lifecycle-learning.
- AGENTS.md: nested-skill loading behavior and harness compatibility.
- README.md: human-facing with all five required sections.
- references/discovery-brief.md: bounded comparison with 13 existing
production and release skills (SRE, release, platform, security,
data, QA, verification, lifecycle-learning, plus milestone skills).
- references/evidence-packet.md: production evidence packet covering
readiness, migration, recovery, capacity/cost, and incident-learning
domains — for both new services and changes to existing systems.
- references/gates.md: gate/exception model with go, no-go, defer,
exception, escalation outcomes, each anchored to service ownership,
risk, evidence, and verification.
- references/handoff-record.md: operational handoff fields and
post-launch learning path.
- evals/evals.json: 5 integrated cases covering normal release,
blocked launch (untested rollback), data migration, dependency
outage, and cost/SLO conflict.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 19:20:38 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add a composable product-lifecycle bundle that routes a product through nine
lifecycle phases — discovery, strategy and portfolio choice, roadmap, UX and
requirements, experimentation, delivery handoff, adoption, success, and
lifecycle review — by composing existing specialist product skills with
phase-entry evidence, handoff artifacts, stop/escalation rules, and a
lifecycle evidence ledger.
The bundle is thin by design: it never duplicates a specialist's
methodology, does not assume B2B SaaS (customer-success routing is
conditional on product type), and supports stopped/escalated paths as
legitimate lifecycle outcomes.
Includes:
- SKILL.md: thin umbrella with 9-phase routing table and loading protocol
- references/phases.md: per-phase contracts with entry evidence, output
artifacts, escalation behavior, completion criteria, and ledger spec
- references/discovery-brief.md: bounded discovery brief comparing with
existing bundles (neckbeard, workflow-architect, tailscale,
research-and-vault)
- references/capability-map.md: capability area to owning skill lookup
- README.md: human-facing with all required sections
- AGENTS.md: agent-facing loading and operational instructions
- evals/evals.json: 6 schema-v1 output-quality cases covering complete
lifecycle, ambiguous request, failed experiment, non-adoption,
justified retirement, and cross-phase evidence handoff
Closes#187
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add a new skill connecting demand, performance, reliability, and spend
decisions. Covers capacity models, unit economics, budget/quota controls,
load/soak test evidence, and SLO-cost tradeoffs with structured templates.
Includes:
- SKILL.md with connected-dimensions framework, working method, four
labeled scenarios (growth, peak, degraded, cost-constrained), and
routing table to six adjacent skills
- README.md with five required human-facing sections
- references/discovery-brief.md comparing ownership boundaries across
financial-modeling, platform-engineering, SRE, product-analytics,
production-readiness, product-roadmapping, and resilience-and-recovery
- Five fillable templates: capacity-model, unit-economics-record,
budget-quota-decision, load-soak-test-plan, slo-cost-tradeoff-record
- evals/evals.json with five output-quality cases: growth-forecast,
peak-event, slo-cost-conflict, quota-decision, misleading-unit-cost
- Regenerated marketplace, Codex, and llms.txt catalogs (117 skills)
- Updated root README catalog section and skill-triggers index
Co-authored-by: username <username>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* feat(production-readiness): add production-readiness skill
Add a cross-domain production-readiness skill that assembles production
evidence into a risk-scaled launch decision. Includes:
- SKILL.md: three risk classes (Low/Standard/High) with proportional
evidence requirements, 11-category evidence checklist with named source
or explicit gap for every category, four launch-decision outcomes
(go/no-go/defer/exception) with accountable owners, exception routing
to explicit human approval, and a route-to table for 12 specialist skills.
- README.md: human-facing with all five required sections.
- references/discovery-brief.md: bounded survey of existing production
and engineering skills with concrete ownership boundaries against
release-engineering and site-reliability-engineering.
- references/readiness-record.md: fillable readiness record template.
- evals/evals.json: five output-quality cases covering low-risk docs,
user-facing launch, migration-dependent release, missing owner evidence
(blocked), and exception requiring human approval.
Closes#196
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
* chore(production-readiness): update catalog files for production-readiness
Update root README catalog, skill-triggers index, and three generated
marketplace catalog files to include the new production-readiness skill.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
---------
Co-authored-by: username <username>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>