Commit Graph
25 Commits
Author SHA1 Message Date
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
aa893e3ec2 feat(bundles): define bundle manifests and lifecycle capability matrix (#203) (#231)
* 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 HedemarkGitHubusername <username>factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
8d30f22cb8 fix(product-strategy): correct stale RICE reference (#211)
* fix(product-strategy): correct stale RICE reference

Fix the misspelled prose reference at product-strategy/references/product-strategy.md:69
to point at the canonical rice-framework.md owned by product-methodology. Add a
repository check that scans references/*.md for stale prose backtick references
to nonexistent files (the bug class the SKILL.md link-resolution pass cannot
see), wired into validate-skills.rb, with a regression test suite proving the
stale reference is caught when reintroduced. product-strategy and
product-methodology remain grandfathered; no evals manifests are added.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix(validate-references): case-sensitive resolution for stale-reference scan

The references scan resolved backtick tokens case-insensitively on hosts with
case-insensitive filesystems (default macOS APFS), so a token such as
`EVIDENCE-LEDGER.md` matched an existing lowercase `evidence-ledger.md` and
escaped detection locally while failing CI's Linux runners. Resolve candidates
against exact directory entries so results match CI on every host, and treat
neckbeard delivery-packet field names (EVIDENCE-LEDGER, DELIVERY-SPEC, REVIEW,
V2-SPEC) as doc-type names rather than file references. Adds regression tests
for case-mismatched and exact-case references.

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>
2026-08-02 16:07:05 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 96f0bd4e46 fix(ci): prevent sys.modules cross-contamination between test directories in check-artifacts
When unittest discover processes skills/binary-analysis/tests/ before
tests/, the integration package gets cached in sys.modules from the
first discover call. Later discover calls reuse the cached package
which doesn't contain the expected test modules, causing spurious
ModuleNotFoundError failures.

Fix: snapshot and restore sys.modules between discover iterations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-30 19:10:03 -04:00
Magnus HedemarkandGitHub 865a1e90c6 feat: fix remaining agent readiness signals for level 5
Squash merge. All CI passes.

4 signals fixed: min_release_age, issue_labeling_system, error_to_insight_pipeline, deployment_observability.
2026-07-29 18:33:55 -04:00
Magnus HedemarkandGitHub 6b44d6f490 feat: improve agent readiness with dev tooling, CI checks, and tests
All CI steps pass including the root pyproject.toml build fix.

14 signals addressed across 3 phases:
- Phase 1: single_command_setup, devcontainer, large_file_detection, tech_debt_tracking, duplicate_code_detection
- Phase 2: structured_logging, log_scrubbing, test_isolation, service_flow_documented, agents_md_validation
- Phase 3: integration_tests_exist, automated_security_review, runbooks_documented, issue_labeling_system
2026-07-29 18:23:26 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> bfe05ef18a feat(ci): add mypy, radon, and deptry to CI pipeline
Add mypy strict type checking, radon cyclomatic complexity analysis,
and deptry unused dependency detection. Fix type annotations in
eval-coverage.py and release.py to pass strict mypy checks.

Resolves 4 agent-readiness signals: type_check, strict_typing,
cyclomatic_complexity, unused_dependencies_detection.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-29 17:52:28 -04:00
usernameandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 476d7e11b0 feat(ci): add linting, formatting, coverage, and security configs
Add ruff linter/formatter with pre-commit hooks, pytest-cov with 60%
coverage threshold, CODEOWNERS, Dependabot for pip/GHA updates, and
.env.example. Auto-fix existing ruff violations across eval_runner/
and scripts/.

10 agent-readiness criteria resolved: lint_config, formatter,
pre_commit_hooks, naming_consistency, dead_code_detection,
test_coverage_thresholds, test_performance_tracking, codeowners,
dependency_update_automation, env_template.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-29 17:43:41 -04:00
username 687d7d7c33 fix: permit removal of eval-covered skills 2026-07-27 10:04:27 -04:00
Magnus HedemarkGitHubmagnus919 <magnus919>
a617ccaf2d feat: validate eval manifest coverage states (#129)
* feat: validate eval manifest coverage states

* test: create fixture directory explicitly

---------

Co-authored-by: magnus919 <magnus919>
2026-07-24 18:13:32 -04:00
Magnus HedemarkGitHubmagnus919 <magnus919>
547aed2db9 fix(verification): preserve requested source fidelity (#127)
Co-authored-by: magnus919 <magnus919>
2026-07-24 16:42:39 -04:00
Magnus HedemarkandGitHub 1e10a56199 fix: complete eval ratchet verification (#109)
Closes #102

Authored by Jasper (AI agent on behalf of @magnus919).
2026-07-22 02:16:36 -04:00
Magnus HedemarkandGitHub fc8a8952ee fix: enforce eval coverage ratchet for complete changed skill directories (#107)
Wire the Phase 3 ratchet into CI by passing the PR base SHA to
eval-coverage.py --modified-from. Expand changed-skill detection from
SKILL.md-only diffs to the entire skill directory so that references,
scripts, fixtures, README, and eval manifest edits all count as
modifications. Add a monotonic coverage floor that fails CI when
coverage decreases between the base and candidate revisions.

Add script tests for ratchet-mode detection and coverage-decrease
behaviour. Update AGENTS.md and CONTRIBUTING.md to describe the
behaviour CI now enforces.

Closes #102

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-07-22 01:51:57 -04:00
Magnus HedemarkandGitHub be0c8df5e2 feat: eval coverage ratchet — gate new skills, track coverage, ratchet thresholds (#99)
Phase 1: New skills (not in grandfathered-skills.txt) must have
evals/evals.json with at least 5 test cases. All 107 existing skills
are grandfathered.

Phase 2: scripts/eval-coverage.py reports coverage (skills with/without
evals, case counts, reference-priority sorting). Added as informational
CI step.

Phase 3: Ratchet thresholds — at 25% coverage, modified skills without
evals get a warning; at 50%, they fail CI. Enforced via
--modified-from flag for PR-scoped checks.

Closes #90
2026-07-21 21:03:21 -04:00
Magnus HedemarkGitHubmagnus919 <magnus919>
dd457f1170 fix: close skill quality lint gaps (#98)
Co-authored-by: magnus919 <magnus919>
2026-07-21 20:47:16 -04:00
Magnus HedemarkGitHubmagnus919 <magnus919>
c092a14c8e feat: validate changed skill descriptions (#97)
Co-authored-by: magnus919 <magnus919>
2026-07-21 20:00:38 -04:00
Magnus HedemarkGitHubmagnus919 <magnus919>
cde4a67ef4 feat: add generated llms.txt skill index (#93)
Generate a root discovery catalog from public skill frontmatter and fail CI
when the committed index drifts. Add a fixture-based regression test for
bundle paths, nested-helper exclusion, normalized descriptions,
deterministic ordering, and stale-file recovery.

Closes #78

AI-assisted: yes (Jasper/Hermes Agent)

Co-authored-by: magnus919 <magnus919>
2026-07-21 17:48:38 -04:00
Magnus HedemarkandGitHub 3d650dad77 fix: correct bundle skill paths in Codex plugin manifest (#91)
The generator used File.basename which stripped the bundles/ prefix,
emitting ./neckbeard instead of ./bundles/neckbeard. Codex discovered
92/96 skills — the 4 bundle entrypoints were missing because their
paths didn't resolve.

Verified with live Codex CLI: all 96 skills now discoverable.

AI-assisted: yes (Jasper/Hermes Agent)
2026-07-21 14:20:56 -04:00
Magnus HedemarkandGitHub 0f2aaf1583 feat: add Codex plugin packaging (single-plugin, metadata-only) (#83)
* feat: add Codex plugin packaging (single-plugin, metadata-only)

Adds .codex-plugin/plugin.json with a skills array listing all public
skills, plus .agents/plugins/marketplace.json for one-command install:

  codex plugin marketplace add magnus919/agent-skills
  codex plugin install magnus919

Same pattern as mattpocock/skills — one plugin, explicit skill paths,
no dist/, no curation, no duplication. Bundle-internal helpers excluded
by the shared glob. CI check mode fails if the manifest drifts.

Closes #79

AI-assisted: yes (Jasper/Hermes Agent)

* chore: trigger CI

* chore: regenerate Codex plugin manifest to include neckbeard bundle
2026-07-21 03:13:20 -04:00
Magnus HedemarkandGitHub 3c8b6cd71c feat: add Claude Code plugin marketplace (metadata-only catalog) (#80)
Adds .claude-plugin/marketplace.json exposing all 95 public skills as
installable plugins via /plugin marketplace add magnus919/agent-skills.

Metadata-only approach: each entry uses source './' + skills ['./<name>']
+ strict:false, so no per-skill plugin.json or directory restructuring is
needed. Bundle-internal helper skills are excluded; bundle entrypoints are
included.

- scripts/gen-claude-marketplace.rb: generates and validates the manifest
- CI step fails if marketplace.json drifts from the skill tree
- README: Claude Code install instructions

Closes #76

AI-assisted: yes (Jasper/Hermes Agent)
2026-07-21 02:17:35 -04:00
Magnus HedemarkandGitHub bd66202e06 fix: remove invalid Hermes skill metadata (#67) 2026-07-19 01:04:33 -04:00
Magnus HedemarkandGitHub 7243433565 chore: align governance with shipped artifact types (#62)
Closes #61\n\nImplemented and independently reviewed with AI assistance from Jasper on behalf of Magnus Hedemark.
2026-07-17 23:37:37 -04:00
Magnus HedemarkandGitHub 139e7d87c4 docs: enforce complete root skill catalog coverage (#42)
Closes #39
2026-07-13 12:32:53 -04:00
Magnus HedemarkandGitHub e0857d385a docs: enforce alphabetical root skill catalog order (#38)
Closes #28
2026-07-13 12:02:53 -04:00
Jasper (AI Assistant) 637c12d832 fix: align skill audit conventions (#101) 2026-07-11 15:40:50 -04:00
Magnus Hedemark a5f7e74972 fix: resolve skill audit findings 2026-07-11 09:24:58 -04:00