Commit Graph
100 Commits
Author SHA1 Message Date
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 0dc4b6c5dc fix(ci): pin epub test deps and surface epublib skip
Pin the epub skill's test-only dependencies (EbookLib, beautifulsoup4) with
exact versions in requirements-epub-test.txt and install from that file in
CI, instead of unpinned package names. The file is test-only and notes that
EbookLib is AGPL; requirements-dev.txt is untouched.

Also surface the epublib skip in epub/scripts/test_epub_skill.sh: when
epublib is not importable (it requires Python 3.13+), epub-edit and
epub-convert now print an explicit SKIPPED line and count as SKIP in the
summary instead of silently passing.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 23:42:25 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b24f8a8d98 ci(validate): run epub skill tests with their dependencies
Install the epub skill's documented test dependencies (EbookLib and
beautifulsoup4) on the runner just before the shell-test step, and move
epub/scripts/test_epub_skill.sh from the manual registry into the run
registry. EbookLib is AGPL-licensed, so the install step is named and
scoped as test-only and does not touch requirements-dev.txt.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 23:22:29 -04:00
Magnus HedemarkandGitHub 6c2a54846e Merge pull request #319 from magnus919/ci/skill-test-coverage-guardrails
ci: run skill shell tests and add coverage guardrail
2026-08-14 23:19:11 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 4255d4429f fix(ci): align skill test discovery with coverage guardrail
Discover skill-local test dirs from git ls-files so nested bundle sub-skill
scripts/ dirs are covered, and force python_files=test_*.py so pytest
collection matches the guardrail's covered model everywhere (skills with a
local pytest.ini would otherwise fall back to the default collection).
Also soften the docs' guardrail claims to describe the enforced naming
convention precisely instead of overclaiming.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 23:15:21 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 98eb5e4c4d docs: document skill test convention
Explain the skill script test contract in CONTRIBUTING.md and AGENTS.md:
Python tests must be named scripts/test_*.py so pytest auto-discovers them in
CI; shell tests are exceptional and must be registered in
scripts/check-skill-tests.py; check-skill-tests.py --check fails CI on any
unregistered skill test file.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 22:41:56 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 837a329531 ci(validate): run skill shell tests and add coverage guardrail
Add scripts/check-skill-tests.py as the single source of truth for
skill-local shell tests. --run executes the registered shell tests in CI;
--check (default) fails on any unregistered skill test file, stale registry
entry, or registry inconsistency, so new un-run shell tests cannot slip in.
Register the 9 deterministic shell suites as run entries and the 4 suites
that need network, credentials, or third-party libraries not installed by
CI as manual entries.

Wire both modes into validate.yml right after the skill-local pytest step
and run the new guardrail tests in the existing pytest invocations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 22:41:53 -04:00
Magnus HedemarkandGitHub 222f431f02 Merge pull request #318 from magnus919/fix/ci-run-skill-script-tests
ci(validate): run skill-local script tests in CI
2026-08-14 22:22:45 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b1d863ee00 ci(validate): recurse when discovering skill test files
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 22:18:37 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 156a01ede2 ci(validate): run skill-local script tests in CI
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 22:03:55 -04:00
Magnus HedemarkandGitHub 38f2ddad84 Merge pull request #317 from magnus919/feature/ai-governance
Add ai-governance methodology skill
2026-08-14 21:31:42 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> bb2578790f fix(ai-governance): reconcile AI Act timeline, exit-code contract, and UK institute naming
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 21:28:12 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 888872cdfd fix(ai-governance): rephrase passages to clear the 8-word n-gram copyright gate
Reword reference and template sentences in ai-governance that shared
8-word contiguous runs with the mission research notes and source books,
so the VAL-IP-001 n-gram check reports zero overlaps.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 21:00:09 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 96721d647f feat(ai-governance): assemble SKILL.md router, README, evals, and repo integration
Add the trigger/router SKILL.md (description, you-own/don't-own table, router
tables accounting for every bundled file, When-not-to-use, neighbor routing), the
human-facing README, the schema-valid evals manifest with six output-quality cases,
the root README catalog entry, the skill-triggers row, and regenerated llms.txt plus
the three marketplace/plugin artifacts.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:47:04 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> fffc38ed81 fix(ai-governance): make reference cross-links resolve for the router gate
References cited templates and research notes as backtick .md tokens that do
not resolve inside the repository, which the stale-reference scanner flags once
the skill ships SKILL.md. Convert template citations to resolvable markdown
links and de-backtick research-note citations (they live in the mission library).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:46:49 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> e750ffce06 feat(ai-governance): add use-case risk-tier classifier script
Add use-case-risk-tier.py, a stdlib-only CLI that classifies an AI use case
(data sensitivity, autonomy, exposure, decision impact) into a low/medium/high
governance tier and the controls that tier requires, with --json and --dry-run.
Ship test_use_case_risk_tier.py covering scoring, tier forcing, validation,
CLI exit codes, graceful failure, and deterministic/dry-run behavior.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:28:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3060606a8a feat(ai-governance): add governance-maturity self-assessment scorer
Add the stdlib-only governance-maturity CLI (reads a JSON answers file of
governance dimensions scored 1-5, computes a maturity level and gap list,
supports --json and --dry-run, exits 0 on healthy input and 1 on critical
all-minimum gaps) with a pytest suite, plus a skill pytest.ini that overrides
the repo-wide coverage addopts for subprocess-based skill tests.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:24:31 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 912dad635b feat(ai-governance): add third-party due diligence and board report templates
Add fillable third-party-due-diligence.md and board-ai-governance-report.md
templates implementing the procurement, third-party, and board oversight
reference, each with purpose, guided fields, sections, and completion notes.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:20:32 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3a870a1e92 feat(ai-governance): add model risk assessment and model card templates
Add NIST-aligned model-risk-assessment.md tiering worksheet and model-card.md
documentation template, each with title, purpose, guided fields, and a
completion section. Governing references already mention both slugs.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:19:11 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 452c061a7e feat(ai-governance): add governance charter and use-case intake templates
Add fillable governance-charter.md (council terms of reference) and
use-case-intake-form.md (intake/registry entry with risk classification)
templates, each with an H1 title, purpose statement, guided fields with
placeholders, and completion instructions, aligned with the operating-model
and risk/lifecycle references.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:17:30 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 8520ce1b77 feat(ai-governance): add reference source-index for provenance
Consolidate the synthesized-from footers of the 10 domain references into a
source-index.md that names all 11 reference files, maps each to its book short
names and research notes, lists the full 12-book bibliography, and states the
paraphrase/synthesis idea-level attribution invariant.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:15:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 315fe937c8 feat(ai-governance): add procurement, third-party, and board oversight reference
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:13:48 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 485c28e845 feat(ai-governance): add regulatory-landscape reference
Synthesizes the mission research note on the current AI regulatory
landscape (EU AI Act, GDPR, US federal/state, UK, China, sectoral rules,
enforcement, horizon scanning) into a dense jurisdiction-by-jurisdiction
reference. Book regulatory chapters are treated as historical context.
Flags the US federal/state position and the EU AI Act high-risk timing as
in-flux and to be verified at use time.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:08:38 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> f8b547594e feat(ai-governance): add llm-and-agent-security reference
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:03:03 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 9b63dc44b8 feat(ai-governance): add privacy-and-data-governance reference
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:57:59 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ad6b87a462 feat(ai-governance): add transparency-explainability reference
Author dense reference on transparency and explainability (XAI methods,
explainability requirements, disclosure, human-AI interaction,
auditability) synthesized from Responsible AI in the Enterprise, Platform
and Model Design for Responsible AI, and Introduction to Responsible AI.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:54:41 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 37c0b00760 feat(ai-governance): add fairness-bias-accountability reference
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:51:38 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> a78adef385 feat(ai-governance): add ai-lifecycle-governance reference
Synthesizes stage gates, model inventory, lineage, drift detection, and
incident response across the AI lifecycle from the Platform and Model
Design, Designing Data Governance, and Data Governance Handbook sources
plus the technical-controls research note.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:48:03 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 777c0656d3 feat(ai-governance): add risk-management-and-frameworks reference
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:41:41 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 0d7c806e45 feat(ai-governance): add governance-operating-model reference
Teach the AI governance operating model: the six-step model, council and
steward roles, decision rights and RACI, federated vs centralized
structures, maturity, and culture. Synthesized from Designing Data
Governance from the Ground Up, the Data Governance Handbook, and the
org/board governance research note; original prose, no verbatim book
text.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:38:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1e9aea7810 feat(ai-governance): add foundations-and-principles reference
Author the first ai-governance reference: what AI governance is, the six
core principles (fairness, accountability, transparency, privacy, safety,
human oversight), and the governance vs compliance vs risk distinction,
synthesized from the four primary books and current research.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:35:22 -04:00
Magnus HedemarkandGitHub 413bcb9c27 Merge pull request #316 from magnus919/flatten-bundles-directory
feat(flatten): flatten bundles/ directory into repo root
2026-08-14 17:51:10 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1ff9f72e70 Merge remote-tracking branch 'origin/main' into flatten-bundles-directory
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 17:47:45 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ed3d09fabd fix(test): correct duplicate-catalog name fixtures for case-sensitive fs
test_rejects_duplicate_catalog_names failed on case-sensitive CI
filesystems (Ubuntu ext4): the flat-layout fixture wrote both duplicate/
and Duplicate/ with frontmatter name: duplicate, so Duplicate/SKILL.md
tripped the name-match guard ('name must match directory name
"Duplicate"') before the duplicate-catalog check ran, hiding the
expected 'duplicate catalog name "duplicate"' error. Local macOS APFS
collapsed the two dirs and passed, concealing the defect.

Detect filesystem case-sensitivity with a Probe/probe probe. On
case-sensitive filesystems write duplicate/ (name: duplicate) and
Duplicate/ (name: Duplicate) so both pass the name-match guard and the
downcased-name collision fires the duplicate-catalog error. On
case-insensitive filesystems the dirs collapse into one, so write the
single dir with name: duplicate and assert the generator succeeds.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 17:44:11 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 409826a81f fix(docs): correct depth-parity comment in example bundle manifest
The comment claimed docs/examples/ sat at "the same depth as a real
<name>/manifest.yaml". Under the flat layout a real manifest sits one
level below the repo root (resolving repo-root paths with ../), while
this example lives two levels below root (../../). Reword the comment
to describe the actual relationship without changing any path values,
field names, or schema content.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 17:05:47 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> cbe27723cf fix(evals): drop bundles/ fixture path from eval-coverage test
Rename the nested-skill fixture paths in test_nested_change_maps_to_nearest_skill_owner
from bundles/example to example so no tracked file (other than the OKF upstream
sample file) references the removed bundles/ directory, satisfying the final
repo-wide sweep (VAL-REF-017).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:55:35 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b7aa174b84 fix(evals): re-point lifecycle corpus tooling at flat layout
Update the three hardcoded bundle manifest paths in run-corpus.sh and
validate-corpus-coverage.py from bundles/<name>/evals/evals.json to
<name>/evals/evals.json, refresh the coverage-index.json via --write-index,
and update the corpus prose (README, coverage-matrix, sources,
discovery-brief) to drop the bundles/ prefix.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:54:34 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3480b7ff5a fix(prose): refresh top-level skill path references for flat layout
Re-point promise-theory reference links to ../../workflow-architect/SKILL.md
(one level deeper than SKILL.md), drop the bundles/ prefix from the
pace-plan evidence-ledger path, and refresh the stale eval-coverage.py
comment to describe only the flat <root>/<skill-name>/SKILL.md shape.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:50:06 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 65fcae6cda docs(flatten): update repo docs for the flat layout
Rewrite README.md Installation prose and references/skill-triggers.md to
drop the bundles/ depth and --full-depth guidance, relabel the architecture
diagram bundle node, and correct bundle-manifest-design.md to place manifests
at <skill>/manifest.yaml with the 8-umbrella count. Fix the example manifest
and schema descriptions, plus the production-excellence AGENTS.md depth note.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:48:49 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 0096aca50b feat(evals): add eval manifests for the 10 sub-skills
Author schema-valid evals/evals.json manifests (>=5 cases each) for the
tailscale sub-skills headscale-backup, headscale-deploy, headscale-derp,
headscale-node-lifecycle, headscale-routing, tailnet-policy, tailscale-client
and the workflow-architect sub-skills bundle-builder, interviewer, observer,
raising schema-valid coverage from 96/152 (63.2%) to 106/152 (69.7%). Remove
all 14 bundles/ entries from scripts/grandfathered-skills.txt now that the
8 umbrellas and 10 sub-skills all carry valid eval manifests.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:23:11 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 0a7c6b9a1f fix(skills): rework moved-skill descriptions to pass quality gate
Rework the description frontmatter of 4 moved skills (tailscale, and
workflow-architect sub-skills bundle-builder, interviewer, observer) so each
starts with a recognized imperative verb, and add "## When not to use" body
sections to all 13 moved skills surfaced by the flatten move (research-and-vault,
tailscale + its 7 sub-skills, workflow-architect + its 3 sub-skills) so every
one defines a negative boundary. Trigger vocabulary is preserved and every
description stays under 1024 chars. Regenerate llms.txt and
.claude-plugin/marketplace.json, which embed the tailscale description.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:13:32 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> df713361c4 fix(flatten): point catalog validation and links at flat layout
Update validate-skills.rb expected_catalog_paths to the flat */SKILL.md
glob (drop the bundles/ term), repoint the 8 README catalog headings to
<name>/SKILL.md, and fix the promise-theory and semantic-spacetime
workflow-architect links to ../workflow-architect/SKILL.md.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:07:01 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> a315b77bd8 feat(flatten): rewrite moved-file paths for flat layout
Re-point relative references inside the six non-tailscale/workflow-architect
bundle dirs now that they live one level shallower at the repo root:
- bundle-root SKILL.md/manifest.yaml/README.md: ../../<target> -> ../<target>,
  cross-bundle ../../bundles/<x> -> ../<x>
- forward-deployed-engineering references/: ../../../<target> -> ../../<target>
- product-lifecycle references cross-bundle ../../bundles/neckbeard -> ../../neckbeard
- product-lifecycle references/discovery-brief.md prose headings drop bundles/ prefix
- neckbeard eval shell commands bundles/neckbeard/eval -> neckbeard/eval
- production-excellence AGENTS.md depth note updated
- manifest header comments point at ../schemas/bundle-manifest-v1.schema.json
- regenerate docs/lifecycle-capability-matrix.{md,json}

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:59:56 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 42447b23eb feat(flatten): repoint lifecycle capability matrix tooling to flat layout
Update gen-lifecycle-matrix.rb and validate-lifecycle-matrix.rb to drop all
hardcoded bundles/ path references after the directory flatten:

- CANONICAL_BUNDLES now selects canonical bundles via */manifest.yaml (the
  8 bundle dirs) instead of */SKILL.md (which would match every top-level
  skill); keeps the 8-bundle invariant required by the validation contract.
- source strings, manifest paths, fallback frontmatter, and base dirs use
  <name>/... at the repo root; the top-level JSON key stays "bundles".
- validate-lifecycle-matrix.rb re-anchors NESTED_HELPER_PATTERN to
  %r{(?:^|/)skills/} so nested helpers (tailscale/skills/*,
  workflow-architect/skills/*) are still detected in the catalogs, and
  canonical_bundles matches the generator's */manifest.yaml glob.
- align the two matrix tests in test-validate-bundles.rb: canonical bundles
  are manifest-having dirs (a manifest-less top-level skill is not a row),
  and the missing-row rejection targets the demo manifest bundle.
- regenerate docs/lifecycle-capability-matrix.{md,json}.

gen check mode: "is current (8 bundles)"; validate:
"Validated lifecycle capability matrix (8 bundle(s)): complete, traceable, and current."
test-validate-bundles.rb: 14 runs, 307 assertions, 0 failures.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:53:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 7b6f26f077 feat(flatten): repoint catalog generators to flat skill glob
Drop the Dir.glob("#{ROOT}/bundles/*/SKILL.md") term from gen-llms-txt.rb,
gen-claude-marketplace.rb, and gen-codex-plugin.rb (the first glob */SKILL.md
now covers the 8 former bundle umbrellas) and refresh the header comments.
Regenerate llms.txt and .codex-plugin/plugin.json (./bundles/<name> ->
./<name>); .claude-plugin/marketplace.json is byte-identical. Update
test-gen-llms-txt.rb fixtures from bundles/zulu etc. to top-level zulu/ with
assertions [zulu](zulu/SKILL.md), and make the duplicate-guard test robust to
case-insensitive filesystems where case-variant dir names collapse.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:47:05 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b623635f54 feat(flatten): repoint validate-bundles glob and rebuild manifest test fixtures
Change bundle-manifest discovery from bundles/*/manifest.yaml to */manifest.yaml
and rebuild the tmpdir fixtures in test-validate-bundles.rb at the tmpdir root
so manifests live at <skill>/manifest.yaml and path fields use the flattened
relative depth. Refresh the validator's header comment.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:29:59 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c0c7690724 feat(flatten): move bundle dirs to repo root
Move the 8 directories under bundles/ to the repo root via git mv and
remove the now-empty bundles/ directory. Replace the "bundles" entry in
pyproject.toml [tool.deptry] extend_exclude with the 8 moved dir names so
the moved trees stay excluded from Python dependency analysis.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:26:27 -04:00
Magnus HedemarkandGitHub ec44df752e Merge pull request #283 from magnus919/dependabot/pip/mypy-gte-2.3.0
chore(deps-dev): update mypy requirement from >=1.0 to >=2.3.0
2026-08-13 22:32:57 -04:00
Magnus HedemarkandGitHub a579e62f7e Merge branch 'main' into dependabot/pip/mypy-gte-2.3.0 2026-08-13 22:12:56 -04:00
Magnus HedemarkandGitHub 5ccd4b1f3d Merge pull request #282 from magnus919/dependabot/pip/loguru-gte-0.7.3
chore(deps-dev): update loguru requirement from >=0.7 to >=0.7.3
2026-08-13 22:12:41 -04:00
Magnus HedemarkandGitHub fda6415920 Merge branch 'main' into dependabot/pip/loguru-gte-0.7.3 2026-08-13 22:10:15 -04:00
Magnus HedemarkandGitHub 94cd26f56d Merge pull request #286 from magnus919/dependabot/pip/ruff-gte-0.16.1
chore(deps-dev): update ruff requirement from >=0.16.0 to >=0.16.1
2026-08-13 22:09:46 -04:00
Magnus HedemarkandGitHub 598ac73253 Merge branch 'main' into dependabot/pip/ruff-gte-0.16.1 2026-08-13 21:51:53 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
579cd507ba Merge pull request #315 from magnus919/add-factory-workflows-1786670236
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-13 21:42:15 -04:00
Magnus Hedemark 0eaf49968c fix: register BYOK DeepSeek model in ~/.factory/settings.json 2026-08-13 21:36:48 -04:00
Magnus Hedemark b18751c75b fix: register BYOK DeepSeek model in ~/.factory/settings.json 2026-08-13 21:36:47 -04:00
Magnus Hedemark 4a4d46f1a0 feat: Add droid-review.yml workflow 2026-08-13 21:17:34 -04:00
Magnus Hedemark b3a1839808 feat: Add droid.yml workflow 2026-08-13 21:17:33 -04:00
Magnus HedemarkandGitHub da17e50a16 Merge pull request #314 from magnus919/feat/semantic-spacetime-skill
feat(semantic-spacetime): add research-grounded semantic spacetime skill
2026-08-13 00:55:14 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 61b3890726 feat(semantic-spacetime): add M4 cross-links and final validation fixes
Add the M4 integration cross-links: a single reverse link in
promise-theory/references/foundations.md section 3.12 pointing to the
semantic-spacetime skill (the only promise-theory change), and one
FAILURE-MODE-INDEX.md row for semantic drift / meaning disagreement
following the file's concrete-trigger + real-skill-path rule. Refresh
stale milestone forward-references in semantic-spacetime/references/
foundations.md now that the M2 references and M3 tooling exist. Full
validate.yml-equivalent suite passes locally: 152 canonical skills, 96
eval manifests schema-valid, eval-coverage ratchet green (63.2%),
check-artifacts + jscpd + ruff/mypy/radon/deptry/bandit green, and the
fake-adapter eval smoke runs 6 trials with 0 failures.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-13 00:34:13 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3fc2f87011 fix(semantic-spacetime): enforce strict sst-model-v1 schema in model lint
model lint now rejects anything outside the sst-model-v1 schema with exit 1
and a named violation: unknown top-level sections (e.g. 'regions:') and
unknown fields inside agents/promises/nodes/edges/acceptances/trajectories/
observations (e.g. 'bogus-field: 42' in a node). Violations name the unknown
key and its location, flow through the --json errors list, and never produce
a traceback. The template's RULES block documents the strictness, the
restricted-YAML subset boundary (anchors/aliases, block scalars, and
multi-document streams rejected exit 1; JSON accepted as an equivalent
representation), and the trajectory node-id reference rule (no edge-
connectivity check in v1). Adds a git-tracked malformed fixture
(tests/fixtures/invalid-model.yaml) and unit tests pinning both rejection
directions, plus unknown-field coverage in agent and edge entries.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-13 00:20:07 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2656704e06 feat(semantic-spacetime): add stdlib-only CLI and black-box test suite
Add scripts/semantic-spacetime.py, a stdlib-only Python 3.10+ CLI for
sst-model-v1 models: model lint (schema validation with coverage summary),
model map (gamma(3,4) text/mermaid/json rendering), model distance (weighted
hop distance, weight |link| + 1 per hop), model trajectory (simple-path
enumeration with cycle notes), and model drift (snapshot diff). Pins the
promise-contract.py conventions: exit codes 0/1/2, --json single-object
purity on dispatched paths, --dry-run no-op guard, never a traceback, module
import with no side effects.

Add the stdlib unittest suite (50 black-box subprocess cases), trigger
probes with the committed Load By Need routing and anti-trigger refusal
tables, and the tracked sample-model fixture materialized from the template's
delimited example. Update SKILL.md and README Quick Start to the real
--help command surface.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-12 23:49:54 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 0430e665ba feat(semantic-spacetime): add M2 application references
Add the four application references completing the knowledge bundle:
applications-infrastructure.md (CFEngine mechanism set, convergence
semantics, descendant ecosystem, promise-keeping-as-data gap, SLOs,
record-of-time machinery, citable lessons), agent-coordination.md
(Burgess agent papers, SSTorytime/MCP-SST, drift and temporal-blindness
literature, MCP/A2A substrate, five [EXTRAPOLATION] synthesis patterns),
patterns.md (ten named patterns with when-to-use and anti-patterns), and
diagnosis-and-debugging.md (bounded three-pass procedure). Every claim is
provenance-marked; promise-theory content is linked, not restated.
SKILL.md Load By Need grows to 7 rows; gotchas 4/5 are grounded in
applications-infrastructure.md per VAL-ROUTE-019; README What You Get
lists the new references.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-12 23:09:26 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2c78dfcca3 feat(semantic-spacetime): add format-compliant M1 skill core
Add the semantic-spacetime skill skeleton: a thin SKILL.md router with
triggers/anti-triggers, Load By Need, Quick Start, Related Skills, gotchas,
and exit conditions; a human-facing README; MIT license; deep
provenance-marked theory references (foundations, glossary, bibliography);
the versioned sst-model-v1 template pair; a 6-case schema-v1 eval manifest;
the root README catalog entry; regenerated marketplace and llms artifacts;
and the skill-triggers row.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-12 22:33:47 -04:00
Magnus HedemarkandGitHub c438315ae4 Merge pull request #313 from magnus919/docs/issue-311-skill-vetting
docs(agent-skills): add third-party skill vetting guidance and deterministic-script rule
2026-08-12 00:50:59 -04:00
Magnus Hedemark cc18d8602c Merge remote-tracking branch 'origin/main' into docs/issue-311-skill-vetting 2026-08-12 00:48:28 -04:00
Magnus Hedemark 8e5bc023a0 docs(agent-skills): add third-party skill vetting guidance and deterministic-script rule
Adds references/vetting-third-party-skills.md with a dependency-style
vetting checklist (provenance, SKILL.md body, scripts, references),
safe first-run practice, and reporting guidance, citing the Snyk
ToxicSkills audit as the primary source for ecosystem risk statistics.

SKILL.md gains the match-prescriptiveness-to-fragility decision rule,
the run-vs-reference intent rule for bundled scripts, and an
Adopting Third-Party Skills section. README and eval manifest updated.

Closes #311
2026-08-12 00:44:58 -04:00
Magnus HedemarkandGitHub 0413a05034 Merge pull request #312 from magnus919/feat/promise-theory-skill
feat(skill): promise theory — expert methodology for hybrid human+AI agent coordination
2026-08-12 00:20:31 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 31a2fd16bb feat(skill): promise-theory quick start documents --json and --dry-run
Quick Start now documents the --json and --dry-run flags with their
exact semantics (single JSON object on stdout; read-only no-write
guard) and points to `python3 scripts/promise-contract.py --help` for
the full flag list, so a no-prior-knowledge user can drive the CLI
end-to-end (VAL-USE-013). No other content changes.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-12 00:12:47 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ffd05b2e1d feat(skill): promise-theory catalog integration
Add the promise-theory skill to the repository catalog: root README entry,
regenerated llms.txt and marketplace/plugin packaging, and a
references/skill-triggers.md row.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-11 23:41:52 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> a30274fa68 feat(skill): promise-theory evals manifest + trigger probes
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-11 23:39:26 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> a2f27c036e feat(skill): promise-theory script + unit tests
Add promise-contract.py, a stdlib-only Python 3.10+ CLI that lints
promise-manifest v1 contracts (restricted-YAML or JSON) against the pinned
schema and renders a promise-graph summary. lint exits 0 on valid + full
coverage, 1 on lint errors/coverage gaps (accumulated, no fail-fast), and 2
on usage/IO errors; --json preserves the {valid, errors, warnings, coverage,
bindings} shape even on parse errors; --dry-run is a no-op guard. Robustness
handles empty/whitespace files, non-UTF-8 bytes, CRLF/BOM, JSON type errors,
and deep nesting without Python tracebacks.

Add tests/test_promise_contract.py covering valid contracts (YAML + JSON),
coverage gaps, schema violations, malformed input, --json, --dry-run, render,
and the robustness cases (empty, dup ids, bindings, enums, expires, encoding,
usage errors). 36 tests pass via unittest discover.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-11 23:32:21 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 4a780c4757 feat(skill): promise-theory templates + human README
Add the three fillable templates (promise manifest YAML, agent contract,
promise review) and the human-facing README with the five required
sections. The manifest template is a lint-clean, fully covered example of
the pinned v1 schema with per-field comments; all intra-template id
references (accepts, expectations.about) resolve cross-agent. The contract
template carries the seven mandated sections with schema-aligned severity
and type vocabulary; the review template carries the five retrospective
sections with the three diagnosis categories.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-11 23:22:38 -04:00
Magnus Hedemark e856ddb52f feat(skill): promise-theory references — diagnosis & debugging + glossary
Complete the seven-reference set for promise-theory. diagnosis-and-debugging.md
maps the Cemri et al. multi-agent failure taxonomy onto promise-theory breach
categories (specification issues ↔ broken promise bodies; inter-agent conflicts
↔ failed acceptance/incompatible co-languages; task verification problems ↔
missing assessment), adds withdrawal failure as a fourth promise-theoretic
class, documents a four-step diagnostic procedure (walk the promise graph →
check bindings → check evaluation loop → check withdrawal semantics) with a
worked example, and states the theory's limitations and open problems (no
coordination-quality benchmark, guarantees don't compose across handoffs, LLM
promises lack causal teeth, stochasticity, ambiguity. glossary.md defines all
27 architecture §4.2 terms as heading-/bold-led entries with citations plus a
related-terms section. Both files stay under 60k chars, resolve all backtick
*.md references and markdown links, and carry consistent EXTRAPOLATION /
[UNVERIFIED] provenance markers.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
EOF
)
2026-08-11 23:19:09 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 93e0d965ca feat(skill): promise-theory references — coordination, patterns, trust & verification
Adds the three coordination references per architecture 4.2/6/7:
- agent-coordination.md: the core thesis with the fixed 11-concept mapping
  table (concept -> concrete agent-coordination practice), the hybrid
  human+agent boundary (humans as acceptors/evaluators, calibrated
  subordination, causal vs moral responsibility, HITL escalation,
  three-languages problem, swarms vs teams), the multi-agent lineage, and
  the agent-council routing statement; cites Burgess arXiv:2604.10505 and
  states the scarcity of direct literature.
- patterns.md: all seven canonical patterns with worked examples, the M12
  ladder, the Ye & Tan contract tuple and lifecycle with degradation
  semantics, the named ESCALATE-2 trigger, and the workflow-architect
  routing via the bundles path.
- trust-and-verification.md: the two-component trust model, belief/evidence,
  P_succ, verification rates as attention budgets incl. Dunbar budgets,
  gameable assessment, semantic-promise measurement guidance, "confine,
  don't convince", the versioned promise ledger, and routing to
  agent-evals-and-observability and artifact-pyramids.
All files under the 60k-char reference cap with [UNVERIFIED]/EXTRAPOLATION
provenance markers per architecture 4.2.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-11 23:12:37 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> d01d7a1578 feat(skill): promise-theory references foundations + applications-infrastructure
Adds references/foundations.md (academic core with Burgess/Bergstra
citations: promise definition and notation S ─b→ R, proposals, scope,
impositions, obligation-as-derived, polarity/bindings, assessment/belief/
evidence, trust as discounting, exact/empty promises, deception, matrices/
graphs, valence/bundles, roles, discovery, Downstream Principle, evaluation
loops, history, adjacent frameworks, critiques; honest formal-status section)
and references/applications-infrastructure.md (CFEngine case study incl. the
promise-keeping-was-never-stored-as-data lesson, IaC comparison table,
distributed-systems connection, adoption history, LLM-reasoning-layer
argument). Both files < 60k chars with provenance markers per architecture
§4.2.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-11 23:06:23 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 236d678a9d feat(skill): promise-theory scaffold — SKILL.md router + MIT LICENSE
Add the promise-theory skill's thin router (SKILL.md) and LICENSE per
architecture §4.1: frontmatter (name, trigger-oriented description with a
negative boundary, license MIT), a 8-line core-model summary with all six
mandated elements, all six use triggers, all five anti-triggers, a
Load-By-Need routing table covering the seven planned references, a Quick
Start (draft from template, lint with scripts/promise-contract.py),
cross-references to the six sibling skills, and all five gotchas. Grounded
in the mission research reports; sibling links resolve; references/*.md
links land with later reference features.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-11 22:56:28 -04:00
Magnus HedemarkandGitHub 4b9d347662 Merge pull request #310 from magnus919/feat/travel-guide-section-footers
feat(skill): travel-guide section-end footers — field notes, next-up, ghost mark
2026-08-10 20:09:05 -04:00
Magnus Hedemark 3cd705f7e6 feat(skill): travel-guide section-end footers — field notes, next-up, ghost mark
Fills the white space between sections with a bottom-of-page footer per
section: a content-derived field note (first anchor failure mode, first day
alternative, practical recheck item, or first skip reason) when one exists, a
next-section line with the following section's number, and a faint ghost
route mark. Footers hug the page bottom via flex column + margin-top auto;
multi-page sections carry the footer at the end of the section. Sheets fill
the print page so the footer lands at the bottom instead of floating.

Field notes repeat model content in one line and never invent new plans;
sections with nothing worth saying render the next-up line only. QA gate,
editorial reference, SKILL.md, and README updated; test suite extended to
cover footer presence, next-section wiring, and field-note content.

AI assistance: implementation and tests drafted by Jasper (Hermes Agent),
design reviewed and approved by Magnus Hedemark.
2026-08-10 20:01:17 -04:00
Magnus HedemarkandGitHub b87d18e15f feat(skills): expose audio/video recording URLs in fireflies transcripts get (#308) (#309) 2026-08-10 17:37:13 -04:00
Magnus HedemarkandGitHub 15b517906a Merge pull request #307 from magnus919/docs/supabase-evals-attribution
docs(skill): attribute supabase/evals harness reference (Apache-2.0)
2026-08-09 18:17:22 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2114147c21 docs(skill): attribute supabase/evals harness reference (Apache-2.0)
The reference's concepts, runtime descriptions, and commands are derived
from the supabase/evals README, which is Apache-2.0. Add an attribution
section to references/agent-evals.md with the license link and list the
harness repository in references/source-index.md, per the repository's
attribution convention.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-09 18:14:15 -04:00
Magnus HedemarkandGitHub 7c61659d1b Merge branch 'main' into dependabot/pip/loguru-gte-0.7.3 2026-08-09 18:12:19 -04:00
Magnus HedemarkandGitHub 7b5845d52d Merge pull request #306 from magnus919/feat/supabase-evals-harness
feat(skill): incorporate supabase/evals harness into supabase skill
2026-08-09 18:09:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 4a5f18e435 feat(skill): incorporate supabase/evals harness into supabase skill
Add references/agent-evals.md documenting the official supabase/evals
harness: eval/experiment concepts, the tools and local-stack runtimes,
run and result-viewing commands, and a mapping of harness scenarios to
the skill's operating references. Route to it from the supabase
"Choose the path" table and from postgres, agent-evals-and-observability,
backend-engineering, and data-engineering. Add two eval cases covering
the new reference and keep the generated catalog artifacts current.

Closes #271

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-09 18:05:33 -04:00
Magnus HedemarkandGitHub 6cdc1b1c32 Merge pull request #305 from magnus919/fix/meshcore-packet-capture-v2.2.0
docs(meshcore-packet-capture): refresh skill for upstream v2.2.0
2026-08-09 13:55:21 -04:00
Magnus Hedemark 9f68c2aef3 test(meshcore-packet-capture): add eval manifest for v2.2.0 surface
The repo's eval-coverage ratchet fails modified skills without a schema-valid
eval manifest (coverage 62% >= 50% fail-on-modify threshold). Add five cases
covering the v2.2.0 additions: --neighbors-now/--neighbors-exit CLI, per-broker
neighbors opt-in + IATA requirement, payload-decoding scope limits, the
--user-service install/uninstall flow, and config precedence.

Part of #304
2026-08-09 13:51:21 -04:00
Magnus HedemarkandMagnus Hedemark b4e7c582a6 docs(meshcore-packet-capture): refresh skill for upstream v2.2.0
Bring SKILL.md and references up to date with agessaman/meshcore-packet-capture
v2.2.0 (26 commits past the v2.0.0 source index):

- CLI boundary: document --neighbors-now / --neighbors-exit
- Config: payload decoding (decode_payloads, include_decoded, hashtag
  channels, channel keys), neighbors publishing (interval, discover window,
  scope timeouts, max), log rotation, ble_pin, per-broker owner/email
- MQTT: neighbors and decoded topics, per-broker include_decoded/neighbors
- Deployment: --user-service install/uninstall flow, meshcore ==2.3.8 pin
- Source index: refresh commit/version, cover payload_decode.py and
  neighbors.py

Closes #304

Co-authored-by: Magnus Hedemark <magnus@users.noreply.github.com>
2026-08-09 13:39:39 -04:00
Magnus HedemarkandGitHub 2823d82585 Merge pull request #303 from magnus919/feat/travel-guide-visual-system
feat(skill): travel-guide visual system — journey line, day strip, meters, photo grade
2026-08-08 15:27:42 -04:00
Magnus Hedemark 3f7c46e368 feat(skill): travel-guide visual system — journey line, day strip, meters, photo grade
Adds the visual deltas verified against the mock: a route journey line on the
cover for multi-stop trips, a color-coded trip-at-a-glance day strip after the
brief, pace and budget meters, ghost section numbers, a unified warm photo
grade on anchor images, and a lede drop cap. Day cards gain an optional kind
field (arrive, city, excursion, coast) that drives the strip colors; anchor
cards and the validator accept optional image fields. Photo-sourcing guidance
for free-license images added to the research reference, QA gate updated, and
the test suite extended to cover the new renderer and validator behavior.

AI assistance: implementation and tests drafted by Jasper (Hermes Agent),
design reviewed and approved by Magnus Hedemark.
2026-08-08 15:20:11 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
6fe5aed86e feat(skill): rename writing skill to writers-helper (#302)
Rename the skill directory to writers-helper and update the name field,
eval manifest skill_name, skill README title and example paths, root
README catalog entry, and the skill-triggers index. Regenerate llms.txt,
.claude-plugin/marketplace.json, .codex-plugin/plugin.json, and
.agents/plugins/marketplace.json from their generators. Content is
unchanged.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-08 13:06:46 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
ecdfc658c1 feat(skill): add writing skill for the full writing lifecycle (#301)
Add writing/, a comprehensive writer's personal skill distilled from a
44-book writing-craft and publishing library. Ships 10 expert references
(planning and research, craft and structure, prose and style, drafting,
editing and revision, blocks and prompts, habits and lifestyle,
publishing and career, genres and formats, pitfalls and solutions),
13 fill-in templates (premise canvas through book proposal, query
letter, and submission log), and 5 Python helper scripts (position-aware
prompt generator, session planner, manuscript stats analyzer, habit
journal, submission tracker). All content is original paraphrase and
synthesis; no copyrighted source material is reproduced.

Add the catalog entry at its sorted position and regenerate llms.txt,
.claude-plugin/marketplace.json, .codex-plugin/plugin.json, and
.agents/plugins/marketplace.json from their generators.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-08 12:53:55 -04:00
Magnus HedemarkandGitHub 29a367e90b fix: SkillOpt optimization of travel-guide skill (3 epochs)
SkillOpt optimization of the travel-guide skill (3 autonomous greenfield epochs, 9/9 proposals accepted): page breaks ahead of all section headers, filesystem hygiene with dedicated working folders, sanitizer defaults redacting profile preferences/constraints, audience and private-by-default in the trip contract, process scaling for narrow questions, renderer-hang guidance, private-artifact image sourcing, shareable edition-phrasing review, and a narrow-question eval case.

Authored by Jasper (AI agent on behalf of Magnus Hedemark).
2026-08-08 03:01:24 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
9a42be585e feat(skill): add genius-life creativity practice skill (#299)
* feat(skill): add genius-life core skill files

Add genius-life/SKILL.md and the six references/ files (creative-process,
practice-mode, development-mode, practices-catalog, evidence-basis,
scope-and-safety) as original synthesis from the mission research library,
with copyright-compliant paraphrase, named-fellow attribution, and honest
framing. Templates, README, evals, and catalog integration ship in later
features.

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

* feat(skill): add genius-life templates, README, and evals

Add six fillable worksheets (talent audit, session plan, project
worksheet, conditions audit, incubation log, risk and failure review),
a human-facing README with the repository's required sections, and a
12-case eval manifest covering both modes and the required boundary
behaviors.

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

* feat(skill): add genius-life to catalog and regenerate artifacts

Add the genius-life README catalog entry at its sorted position and
regenerate llms.txt, .claude-plugin/marketplace.json, .codex-plugin/plugin.json,
and .agents/plugins/marketplace.json from their generators.

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-08 01:31:20 -04:00
Magnus HedemarkandGitHub c44685800e feat: add personalized travel-guide skill
Add the personalized travel dossier skill, its portable evaluation cases, rendering and privacy helpers, tests, and synchronized discovery catalogs.

Authored by Jasper (AI agent on behalf of Magnus Hedemark).
2026-08-07 23:34:19 -04:00
Magnus HedemarkandGitHub 43fd4b9518 fix(anydoc): clarify rendered-layout inspection route (#297) 2026-08-07 16:13:42 -04:00
Magnus HedemarkandGitHub 935299d271 Optimize anydoc skill guidance (#296) 2026-08-06 23:02:50 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
f37dc73829 feat(skill): add anydoc — office documents to GitHub-Flavored Markdown (#295)
* 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>
2026-08-06 20:11:19 -04:00
Magnus HedemarkandGitHub cff17c5974 fix: SkillOpt 3-epoch optimization of forward-deployed-engineering bundle (#294)
* 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).
2026-08-06 03:20:45 -04:00
Magnus HedemarkandGitHub a4db8e7d43 Add forward-deployed-engineering bundle (#292)
* feat: add forward deployed engineering bundle

* fix: close FDE bundle review findings
2026-08-06 00:37:47 -04:00
Magnus HedemarkandGitHub eadb82e069 fix(skills): reconcile fireflies CLI with live GraphQL schema (#290)
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