agtmls 0.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agtmls-0.0.3/.agents/plugins/marketplace.json +16 -0
- agtmls-0.0.3/.claude-plugin/marketplace.json +35 -0
- agtmls-0.0.3/.claude-plugin/plugin.json +12 -0
- agtmls-0.0.3/.codex-plugin/plugin.json +34 -0
- agtmls-0.0.3/.corral-state.json +4 -0
- agtmls-0.0.3/.cursor-plugin/plugin.json +23 -0
- agtmls-0.0.3/.gitignore +9 -0
- agtmls-0.0.3/.kimi-plugin/plugin.json +24 -0
- agtmls-0.0.3/.opencode/INSTALL.md +33 -0
- agtmls-0.0.3/CATALOG.md +46 -0
- agtmls-0.0.3/CHANGELOG.md +145 -0
- agtmls-0.0.3/CONTRIBUTING.md +124 -0
- agtmls-0.0.3/GEMINI.md +4 -0
- agtmls-0.0.3/LICENSE +21 -0
- agtmls-0.0.3/PKG-INFO +429 -0
- agtmls-0.0.3/README.md +409 -0
- agtmls-0.0.3/RELEASE.md +40 -0
- agtmls-0.0.3/SBOM.spdx.json +2016 -0
- agtmls-0.0.3/SECURITY.md +33 -0
- agtmls-0.0.3/VERSIONING.md +30 -0
- agtmls-0.0.3/agent-card.json +184 -0
- agtmls-0.0.3/checks.json +62 -0
- agtmls-0.0.3/commands/README.md +10 -0
- agtmls-0.0.3/commands/agtmls.md +16 -0
- agtmls-0.0.3/docs/adr/0001-flat-skill-tree.md +41 -0
- agtmls-0.0.3/docs/adr/0002-generated-portable-frontmatter.md +35 -0
- agtmls-0.0.3/docs/adr/0003-bundled-registry-in-the-wheel.md +39 -0
- agtmls-0.0.3/docs/adr/0004-allowed-tools-declares-full-capability.md +41 -0
- agtmls-0.0.3/docs/adr/README.md +52 -0
- agtmls-0.0.3/docs/checks.md +72 -0
- agtmls-0.0.3/docs/cli.md +46 -0
- agtmls-0.0.3/docs/tag-protection.md +45 -0
- agtmls-0.0.3/evals/README.md +46 -0
- agtmls-0.0.3/evals/behavioral/README.md +27 -0
- agtmls-0.0.3/evals/behavioral/cases/agent-loop-design.json +19 -0
- agtmls-0.0.3/evals/behavioral/cases/ai-supply-chain-security.json +19 -0
- agtmls-0.0.3/evals/behavioral/cases/cross-language-port.json +27 -0
- agtmls-0.0.3/evals/behavioral/cases/handoff.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-architecture-contract.json +23 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-build-and-env.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-change-control.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-ci-and-release.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-config-and-flags.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-coverage-campaign.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-debugging-playbook.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-diagnostics-and-tooling.json +25 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-docs-and-writing.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-external-positioning.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-failure-archaeology.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-research-frontier.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/noyalib-validation-and-qa.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/pr-review-and-release.json +19 -0
- agtmls-0.0.3/evals/behavioral/cases/receiving-code-review.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/systematic-debugging.json +25 -0
- agtmls-0.0.3/evals/behavioral/cases/test-driven-development.json +25 -0
- agtmls-0.0.3/evals/behavioral/cases/using-agtmls.json +18 -0
- agtmls-0.0.3/evals/behavioral/cases/verification-before-completion.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/web-research-and-source-triage.json +19 -0
- agtmls-0.0.3/evals/behavioral/cases/writing-plans.json +24 -0
- agtmls-0.0.3/evals/behavioral/cases/yaml-domain-reference.json +24 -0
- agtmls-0.0.3/evals/cases/agent-loop-design.json +11 -0
- agtmls-0.0.3/evals/cases/ai-supply-chain-security.json +11 -0
- agtmls-0.0.3/evals/cases/cross-language-port.json +13 -0
- agtmls-0.0.3/evals/cases/handoff.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-architecture-contract.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-build-and-env.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-change-control.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-ci-and-release.json +14 -0
- agtmls-0.0.3/evals/cases/noyalib-config-and-flags.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-coverage-campaign.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-debugging-playbook.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-diagnostics-and-tooling.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-docs-and-writing.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-external-positioning.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-failure-archaeology.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-research-frontier.json +13 -0
- agtmls-0.0.3/evals/cases/noyalib-validation-and-qa.json +13 -0
- agtmls-0.0.3/evals/cases/pr-review-and-release.json +11 -0
- agtmls-0.0.3/evals/cases/receiving-code-review.json +13 -0
- agtmls-0.0.3/evals/cases/systematic-debugging.json +13 -0
- agtmls-0.0.3/evals/cases/test-driven-development.json +13 -0
- agtmls-0.0.3/evals/cases/using-agtmls.json +13 -0
- agtmls-0.0.3/evals/cases/verification-before-completion.json +13 -0
- agtmls-0.0.3/evals/cases/web-research-and-source-triage.json +11 -0
- agtmls-0.0.3/evals/cases/writing-plans.json +13 -0
- agtmls-0.0.3/evals/cases/yaml-domain-reference.json +13 -0
- agtmls-0.0.3/gemini-extension.json +6 -0
- agtmls-0.0.3/index.json +1771 -0
- agtmls-0.0.3/lifecycle.json +57 -0
- agtmls-0.0.3/mcp-resources.json +187 -0
- agtmls-0.0.3/plugin.json +5 -0
- agtmls-0.0.3/profiles.json +87 -0
- agtmls-0.0.3/provenance.json +83 -0
- agtmls-0.0.3/providers.json +149 -0
- agtmls-0.0.3/pyproject.toml +77 -0
- agtmls-0.0.3/references/README.md +17 -0
- agtmls-0.0.3/references/definition-of-done.md +49 -0
- agtmls-0.0.3/references/noyalib-bundle.md +126 -0
- agtmls-0.0.3/references/registry-schema.md +100 -0
- agtmls-0.0.3/scripts/agtmls-doctor.py +182 -0
- agtmls-0.0.3/scripts/agtmls.py +522 -0
- agtmls-0.0.3/scripts/bench.py +15 -0
- agtmls-0.0.3/scripts/bump-version.py +120 -0
- agtmls-0.0.3/scripts/check-skill-collisions.py +117 -0
- agtmls-0.0.3/scripts/evolve-session.py +24 -0
- agtmls-0.0.3/scripts/export-registry.py +130 -0
- agtmls-0.0.3/scripts/generate-agent-card.py +18 -0
- agtmls-0.0.3/scripts/generate-catalog.py +67 -0
- agtmls-0.0.3/scripts/generate-docs-site.py +124 -0
- agtmls-0.0.3/scripts/generate-mcp-resources.py +18 -0
- agtmls-0.0.3/scripts/generate-plugin-manifests.py +230 -0
- agtmls-0.0.3/scripts/generate-provenance.py +28 -0
- agtmls-0.0.3/scripts/generate-sbom.py +28 -0
- agtmls-0.0.3/scripts/generate-skill-index.py +254 -0
- agtmls-0.0.3/scripts/import-skill.py +91 -0
- agtmls-0.0.3/scripts/next-version.py +62 -0
- agtmls-0.0.3/scripts/propose-skill-from-session.py +128 -0
- agtmls-0.0.3/scripts/provider-install.py +76 -0
- agtmls-0.0.3/scripts/record-evidence.py +14 -0
- agtmls-0.0.3/scripts/registry-diff.py +58 -0
- agtmls-0.0.3/scripts/release-check.py +41 -0
- agtmls-0.0.3/scripts/release-dry-run.py +104 -0
- agtmls-0.0.3/scripts/release-pack.py +62 -0
- agtmls-0.0.3/scripts/run-all-checks.py +159 -0
- agtmls-0.0.3/scripts/run-behavioral-evals.py +77 -0
- agtmls-0.0.3/scripts/run-trigger-evals.py +122 -0
- agtmls-0.0.3/scripts/run-unit-tests.py +541 -0
- agtmls-0.0.3/scripts/scaffold-skill.py +87 -0
- agtmls-0.0.3/scripts/setup-workspace.sh +217 -0
- agtmls-0.0.3/scripts/smoke-bump-version-check.py +34 -0
- agtmls-0.0.3/scripts/smoke-cli.py +111 -0
- agtmls-0.0.3/scripts/smoke-evolve-evidence.py +22 -0
- agtmls-0.0.3/scripts/smoke-export.py +81 -0
- agtmls-0.0.3/scripts/smoke-import.py +51 -0
- agtmls-0.0.3/scripts/smoke-install-profiles.py +68 -0
- agtmls-0.0.3/scripts/smoke-install.py +73 -0
- agtmls-0.0.3/scripts/smoke-live-providers.py +111 -0
- agtmls-0.0.3/scripts/smoke-next-version.py +41 -0
- agtmls-0.0.3/scripts/smoke-proposal.py +69 -0
- agtmls-0.0.3/scripts/smoke-provider-install.py +53 -0
- agtmls-0.0.3/scripts/smoke-release-dry-run.py +33 -0
- agtmls-0.0.3/scripts/smoke-release-pack.py +69 -0
- agtmls-0.0.3/scripts/smoke-scaffold.py +80 -0
- agtmls-0.0.3/scripts/sync-skill-frontmatter.py +194 -0
- agtmls-0.0.3/scripts/validate-check-manifest.py +69 -0
- agtmls-0.0.3/scripts/validate-cli-surface.py +97 -0
- agtmls-0.0.3/scripts/validate-commands.py +71 -0
- agtmls-0.0.3/scripts/validate-doc-links.py +63 -0
- agtmls-0.0.3/scripts/validate-docs-site.py +35 -0
- agtmls-0.0.3/scripts/validate-eval-cases.py +108 -0
- agtmls-0.0.3/scripts/validate-generated-artifacts.py +36 -0
- agtmls-0.0.3/scripts/validate-gitignore.py +46 -0
- agtmls-0.0.3/scripts/validate-governance.py +18 -0
- agtmls-0.0.3/scripts/validate-json-files.py +54 -0
- agtmls-0.0.3/scripts/validate-licence-headers.py +76 -0
- agtmls-0.0.3/scripts/validate-lifecycle.py +50 -0
- agtmls-0.0.3/scripts/validate-packaging.py +144 -0
- agtmls-0.0.3/scripts/validate-plugin-manifest.py +202 -0
- agtmls-0.0.3/scripts/validate-profiles.py +61 -0
- agtmls-0.0.3/scripts/validate-providers.py +93 -0
- agtmls-0.0.3/scripts/validate-python-scripts.py +39 -0
- agtmls-0.0.3/scripts/validate-release.py +46 -0
- agtmls-0.0.3/scripts/validate-secrets.py +54 -0
- agtmls-0.0.3/scripts/validate-shell-syntax.py +49 -0
- agtmls-0.0.3/scripts/validate-skill-index.py +80 -0
- agtmls-0.0.3/scripts/validate-skill-metadata.py +92 -0
- agtmls-0.0.3/scripts/validate-skills.py +182 -0
- agtmls-0.0.3/scripts/validate-spec-conformance.py +78 -0
- agtmls-0.0.3/scripts/validate-system-prompts.py +48 -0
- agtmls-0.0.3/scripts/validate-templates.py +54 -0
- agtmls-0.0.3/scripts/validate-version-policy.py +121 -0
- agtmls-0.0.3/scripts/verify-release-assets.py +128 -0
- agtmls-0.0.3/skills/agent-loop-design/SKILL.md +32 -0
- agtmls-0.0.3/skills/agent-loop-design/metadata.json +20 -0
- agtmls-0.0.3/skills/agent-loop-design/reference.md +16 -0
- agtmls-0.0.3/skills/ai-supply-chain-security/SKILL.md +36 -0
- agtmls-0.0.3/skills/ai-supply-chain-security/metadata.json +20 -0
- agtmls-0.0.3/skills/ai-supply-chain-security/reference.md +16 -0
- agtmls-0.0.3/skills/cross-language-port/SKILL.md +196 -0
- agtmls-0.0.3/skills/cross-language-port/examples/README.md +51 -0
- agtmls-0.0.3/skills/cross-language-port/examples/bash-to-python-pathdedupe/README.md +51 -0
- agtmls-0.0.3/skills/cross-language-port/examples/bash-to-python-pathdedupe/corpus/expected.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/bash-to-python-pathdedupe/corpus/input.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/bash-to-python-pathdedupe/port.py +31 -0
- agtmls-0.0.3/skills/cross-language-port/examples/bash-to-python-pathdedupe/reference.sh +34 -0
- agtmls-0.0.3/skills/cross-language-port/examples/bash-to-python-pathdedupe/verify.sh +6 -0
- agtmls-0.0.3/skills/cross-language-port/examples/boundary-traps/README.md +39 -0
- agtmls-0.0.3/skills/cross-language-port/examples/boundary-traps/integer-width/verify.sh +34 -0
- agtmls-0.0.3/skills/cross-language-port/examples/go-to-rust-fraction/README.md +42 -0
- agtmls-0.0.3/skills/cross-language-port/examples/go-to-rust-fraction/corpus/expected.txt +9 -0
- agtmls-0.0.3/skills/cross-language-port/examples/go-to-rust-fraction/corpus/input.txt +9 -0
- agtmls-0.0.3/skills/cross-language-port/examples/go-to-rust-fraction/port.rs +85 -0
- agtmls-0.0.3/skills/cross-language-port/examples/go-to-rust-fraction/reference.go +70 -0
- agtmls-0.0.3/skills/cross-language-port/examples/go-to-rust-fraction/verify.sh +7 -0
- agtmls-0.0.3/skills/cross-language-port/examples/js-to-ts-configvalidate/README.md +44 -0
- agtmls-0.0.3/skills/cross-language-port/examples/js-to-ts-configvalidate/corpus/expected.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/js-to-ts-configvalidate/corpus/input.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/js-to-ts-configvalidate/package.json +4 -0
- agtmls-0.0.3/skills/cross-language-port/examples/js-to-ts-configvalidate/port.ts +50 -0
- agtmls-0.0.3/skills/cross-language-port/examples/js-to-ts-configvalidate/reference.js +34 -0
- agtmls-0.0.3/skills/cross-language-port/examples/js-to-ts-configvalidate/verify.sh +5 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-cpp-hexcolor/README.md +42 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-cpp-hexcolor/compile_flags.txt +3 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-cpp-hexcolor/corpus/expected.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-cpp-hexcolor/corpus/input.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-cpp-hexcolor/port.cpp +56 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-cpp-hexcolor/reference.py +36 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-cpp-hexcolor/verify.sh +7 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-go-duration/README.md +47 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-go-duration/corpus/expected.txt +9 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-go-duration/corpus/input.txt +9 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-go-duration/port.go +54 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-go-duration/reference.py +38 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-go-duration/verify.sh +5 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-rust-iban/README.md +51 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-rust-iban/corpus/expected.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-rust-iban/corpus/input.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-rust-iban/port.rs +91 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-rust-iban/reference.py +37 -0
- agtmls-0.0.3/skills/cross-language-port/examples/py-to-rust-iban/verify.sh +9 -0
- agtmls-0.0.3/skills/cross-language-port/examples/ruby-to-python-histogram/README.md +41 -0
- agtmls-0.0.3/skills/cross-language-port/examples/ruby-to-python-histogram/corpus/expected.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/ruby-to-python-histogram/corpus/input.txt +3 -0
- agtmls-0.0.3/skills/cross-language-port/examples/ruby-to-python-histogram/port.py +25 -0
- agtmls-0.0.3/skills/cross-language-port/examples/ruby-to-python-histogram/reference.rb +15 -0
- agtmls-0.0.3/skills/cross-language-port/examples/ruby-to-python-histogram/verify.sh +5 -0
- agtmls-0.0.3/skills/cross-language-port/examples/rust-to-swift-op/README.md +38 -0
- agtmls-0.0.3/skills/cross-language-port/examples/rust-to-swift-op/corpus/expected.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/rust-to-swift-op/corpus/input.txt +8 -0
- agtmls-0.0.3/skills/cross-language-port/examples/rust-to-swift-op/port.swift +53 -0
- agtmls-0.0.3/skills/cross-language-port/examples/rust-to-swift-op/reference.rs +50 -0
- agtmls-0.0.3/skills/cross-language-port/examples/rust-to-swift-op/verify.sh +7 -0
- agtmls-0.0.3/skills/cross-language-port/harness/README.md +67 -0
- agtmls-0.0.3/skills/cross-language-port/harness/golden-diff.sh +45 -0
- agtmls-0.0.3/skills/cross-language-port/harness/port-check.sh +106 -0
- agtmls-0.0.3/skills/cross-language-port/harness/templates/fast-check_diff.mjs +24 -0
- agtmls-0.0.3/skills/cross-language-port/harness/templates/hypothesis_diff.py +29 -0
- agtmls-0.0.3/skills/cross-language-port/harness/templates/proptest_diff.rs +44 -0
- agtmls-0.0.3/skills/cross-language-port/metadata.json +23 -0
- agtmls-0.0.3/skills/cross-language-port/reference.md +291 -0
- agtmls-0.0.3/skills/cross-language-port/triggers.md +74 -0
- agtmls-0.0.3/skills/handoff/SKILL.md +117 -0
- agtmls-0.0.3/skills/handoff/metadata.json +20 -0
- agtmls-0.0.3/skills/handoff/reference.md +137 -0
- agtmls-0.0.3/skills/noyalib-architecture-contract/SKILL.md +221 -0
- agtmls-0.0.3/skills/noyalib-architecture-contract/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-architecture-contract/reference.md +262 -0
- agtmls-0.0.3/skills/noyalib-build-and-env/SKILL.md +280 -0
- agtmls-0.0.3/skills/noyalib-build-and-env/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-build-and-env/reference.md +84 -0
- agtmls-0.0.3/skills/noyalib-change-control/SKILL.md +308 -0
- agtmls-0.0.3/skills/noyalib-change-control/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-change-control/reference.md +311 -0
- agtmls-0.0.3/skills/noyalib-ci-and-release/SKILL.md +268 -0
- agtmls-0.0.3/skills/noyalib-ci-and-release/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-ci-and-release/reference.md +450 -0
- agtmls-0.0.3/skills/noyalib-config-and-flags/SKILL.md +317 -0
- agtmls-0.0.3/skills/noyalib-config-and-flags/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-config-and-flags/reference.md +180 -0
- agtmls-0.0.3/skills/noyalib-coverage-campaign/SKILL.md +355 -0
- agtmls-0.0.3/skills/noyalib-coverage-campaign/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-coverage-campaign/reference.md +426 -0
- agtmls-0.0.3/skills/noyalib-debugging-playbook/SKILL.md +306 -0
- agtmls-0.0.3/skills/noyalib-debugging-playbook/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-debugging-playbook/reference.md +145 -0
- agtmls-0.0.3/skills/noyalib-diagnostics-and-tooling/SKILL.md +389 -0
- agtmls-0.0.3/skills/noyalib-diagnostics-and-tooling/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-diagnostics-and-tooling/reference.md +280 -0
- agtmls-0.0.3/skills/noyalib-docs-and-writing/SKILL.md +274 -0
- agtmls-0.0.3/skills/noyalib-docs-and-writing/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-docs-and-writing/reference.md +193 -0
- agtmls-0.0.3/skills/noyalib-external-positioning/SKILL.md +240 -0
- agtmls-0.0.3/skills/noyalib-external-positioning/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-external-positioning/reference.md +173 -0
- agtmls-0.0.3/skills/noyalib-failure-archaeology/SKILL.md +178 -0
- agtmls-0.0.3/skills/noyalib-failure-archaeology/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-failure-archaeology/reference.md +508 -0
- agtmls-0.0.3/skills/noyalib-research-frontier/SKILL.md +207 -0
- agtmls-0.0.3/skills/noyalib-research-frontier/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-research-frontier/reference.md +329 -0
- agtmls-0.0.3/skills/noyalib-validation-and-qa/SKILL.md +263 -0
- agtmls-0.0.3/skills/noyalib-validation-and-qa/metadata.json +23 -0
- agtmls-0.0.3/skills/noyalib-validation-and-qa/reference.md +147 -0
- agtmls-0.0.3/skills/pr-review-and-release/SKILL.md +32 -0
- agtmls-0.0.3/skills/pr-review-and-release/metadata.json +20 -0
- agtmls-0.0.3/skills/pr-review-and-release/reference.md +16 -0
- agtmls-0.0.3/skills/receiving-code-review/SKILL.md +125 -0
- agtmls-0.0.3/skills/receiving-code-review/metadata.json +20 -0
- agtmls-0.0.3/skills/receiving-code-review/reference.md +127 -0
- agtmls-0.0.3/skills/systematic-debugging/SKILL.md +140 -0
- agtmls-0.0.3/skills/systematic-debugging/metadata.json +22 -0
- agtmls-0.0.3/skills/systematic-debugging/reference.md +144 -0
- agtmls-0.0.3/skills/test-driven-development/SKILL.md +142 -0
- agtmls-0.0.3/skills/test-driven-development/metadata.json +22 -0
- agtmls-0.0.3/skills/test-driven-development/reference.md +118 -0
- agtmls-0.0.3/skills/using-agtmls/SKILL.md +83 -0
- agtmls-0.0.3/skills/using-agtmls/metadata.json +20 -0
- agtmls-0.0.3/skills/using-agtmls/reference.md +54 -0
- agtmls-0.0.3/skills/verification-before-completion/SKILL.md +153 -0
- agtmls-0.0.3/skills/verification-before-completion/metadata.json +20 -0
- agtmls-0.0.3/skills/verification-before-completion/reference.md +151 -0
- agtmls-0.0.3/skills/web-research-and-source-triage/SKILL.md +32 -0
- agtmls-0.0.3/skills/web-research-and-source-triage/metadata.json +20 -0
- agtmls-0.0.3/skills/web-research-and-source-triage/reference.md +16 -0
- agtmls-0.0.3/skills/writing-plans/SKILL.md +121 -0
- agtmls-0.0.3/skills/writing-plans/metadata.json +20 -0
- agtmls-0.0.3/skills/writing-plans/reference.md +143 -0
- agtmls-0.0.3/skills/yaml-domain-reference/SKILL.md +362 -0
- agtmls-0.0.3/skills/yaml-domain-reference/metadata.json +23 -0
- agtmls-0.0.3/skills/yaml-domain-reference/reference.md +221 -0
- agtmls-0.0.3/src/agtmls/__init__.py +5 -0
- agtmls-0.0.3/src/agtmls/__main__.py +10 -0
- agtmls-0.0.3/src/agtmls/cli.py +99 -0
- agtmls-0.0.3/system-prompts/_base.md +113 -0
- agtmls-0.0.3/system-prompts/bash.md +138 -0
- agtmls-0.0.3/system-prompts/cpp.md +146 -0
- agtmls-0.0.3/system-prompts/go.md +156 -0
- agtmls-0.0.3/system-prompts/javascript.md +142 -0
- agtmls-0.0.3/system-prompts/python.md +165 -0
- agtmls-0.0.3/system-prompts/ruby.md +156 -0
- agtmls-0.0.3/system-prompts/rust.md +135 -0
- agtmls-0.0.3/system-prompts/swift.md +135 -0
- agtmls-0.0.3/system-prompts/typescript.md +142 -0
- agtmls-0.0.3/templates/README.md +12 -0
- agtmls-0.0.3/templates/evals/behavioral.json +21 -0
- agtmls-0.0.3/templates/evals/routing.json +11 -0
- agtmls-0.0.3/templates/skill/SKILL.md +34 -0
- agtmls-0.0.3/templates/skill/metadata.json +20 -0
- agtmls-0.0.3/templates/skill/reference.md +9 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "The universal agent skills registry — polyglot engineering skills, system prompts, and commands for Claude Code and compatible agents.",
|
|
3
|
+
"name": "agtmls",
|
|
4
|
+
"owner": {
|
|
5
|
+
"name": "Sebastien Rousseau",
|
|
6
|
+
"url": "https://github.com/sebastienrousseau"
|
|
7
|
+
},
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"author": {
|
|
11
|
+
"name": "Sebastien Rousseau"
|
|
12
|
+
},
|
|
13
|
+
"category": "engineering",
|
|
14
|
+
"commands": "./commands",
|
|
15
|
+
"description": "The universal agent skills registry — polyglot engineering skills and system prompts, symlinked or installed into consumer repos.",
|
|
16
|
+
"displayName": "AgtMLS",
|
|
17
|
+
"homepage": "https://github.com/sebastienrousseau/agtmls",
|
|
18
|
+
"keywords": [
|
|
19
|
+
"skills",
|
|
20
|
+
"registry",
|
|
21
|
+
"polyglot",
|
|
22
|
+
"porting",
|
|
23
|
+
"security",
|
|
24
|
+
"release"
|
|
25
|
+
],
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"name": "agtmls",
|
|
28
|
+
"repository": "https://github.com/sebastienrousseau/agtmls",
|
|
29
|
+
"skills": "./skills",
|
|
30
|
+
"source": "./",
|
|
31
|
+
"version": "0.0.3"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"version": "0.0.3"
|
|
35
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"author": {
|
|
3
|
+
"name": "Sebastien Rousseau"
|
|
4
|
+
},
|
|
5
|
+
"commands": "./commands",
|
|
6
|
+
"description": "The universal agent skills registry — polyglot engineering skills and system prompts, symlinked or installed into consumer repos.",
|
|
7
|
+
"homepage": "https://github.com/sebastienrousseau/agtmls",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"name": "agtmls",
|
|
10
|
+
"skills": "./skills",
|
|
11
|
+
"version": "0.0.3"
|
|
12
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"author": {
|
|
3
|
+
"name": "Sebastien Rousseau"
|
|
4
|
+
},
|
|
5
|
+
"commands": "./commands",
|
|
6
|
+
"description": "The universal agent skills registry — polyglot engineering skills and system prompts, symlinked or installed into consumer repos.",
|
|
7
|
+
"homepage": "https://github.com/sebastienrousseau/agtmls",
|
|
8
|
+
"interface": {
|
|
9
|
+
"capabilities": [
|
|
10
|
+
"Read",
|
|
11
|
+
"Write",
|
|
12
|
+
"Interactive"
|
|
13
|
+
],
|
|
14
|
+
"developerName": "Sebastien Rousseau",
|
|
15
|
+
"displayName": "AgtMLS",
|
|
16
|
+
"shortDescription": "The universal agent skills registry",
|
|
17
|
+
"websiteURL": "https://github.com/sebastienrousseau/agtmls"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"skills",
|
|
21
|
+
"registry",
|
|
22
|
+
"polyglot",
|
|
23
|
+
"porting",
|
|
24
|
+
"security",
|
|
25
|
+
"release"
|
|
26
|
+
],
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"name": "agtmls",
|
|
29
|
+
"repository": "https://github.com/sebastienrousseau/agtmls",
|
|
30
|
+
"skills": [
|
|
31
|
+
"./skills"
|
|
32
|
+
],
|
|
33
|
+
"version": "0.0.3"
|
|
34
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"author": {
|
|
3
|
+
"name": "Sebastien Rousseau"
|
|
4
|
+
},
|
|
5
|
+
"description": "The universal agent skills registry — polyglot engineering skills and system prompts, symlinked or installed into consumer repos.",
|
|
6
|
+
"displayName": "AgtMLS",
|
|
7
|
+
"homepage": "https://github.com/sebastienrousseau/agtmls",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"skills",
|
|
10
|
+
"registry",
|
|
11
|
+
"polyglot",
|
|
12
|
+
"porting",
|
|
13
|
+
"security",
|
|
14
|
+
"release"
|
|
15
|
+
],
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"name": "agtmls",
|
|
18
|
+
"repository": "https://github.com/sebastienrousseau/agtmls",
|
|
19
|
+
"skills": [
|
|
20
|
+
"./skills"
|
|
21
|
+
],
|
|
22
|
+
"version": "0.0.3"
|
|
23
|
+
}
|
agtmls-0.0.3/.gitignore
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"author": {
|
|
3
|
+
"name": "Sebastien Rousseau"
|
|
4
|
+
},
|
|
5
|
+
"description": "The universal agent skills registry — polyglot engineering skills and system prompts, symlinked or installed into consumer repos.",
|
|
6
|
+
"homepage": "https://github.com/sebastienrousseau/agtmls",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"skills",
|
|
9
|
+
"registry",
|
|
10
|
+
"polyglot",
|
|
11
|
+
"porting",
|
|
12
|
+
"security",
|
|
13
|
+
"release"
|
|
14
|
+
],
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"name": "agtmls",
|
|
17
|
+
"sessionStart": {
|
|
18
|
+
"skill": "using-agtmls"
|
|
19
|
+
},
|
|
20
|
+
"skills": [
|
|
21
|
+
"./skills"
|
|
22
|
+
],
|
|
23
|
+
"version": "0.0.3"
|
|
24
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
|
|
2
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
3
|
+
<!-- Generated by scripts/generate-plugin-manifests.py; do not edit by hand. -->
|
|
4
|
+
|
|
5
|
+
# Installing AgtMLS for OpenCode
|
|
6
|
+
|
|
7
|
+
OpenCode has no plugin manifest for skill bundles. It loads Markdown
|
|
8
|
+
guidance through the `instructions` array in `opencode.json`, which takes
|
|
9
|
+
paths and glob patterns.
|
|
10
|
+
|
|
11
|
+
Clone the hub, then add it to your global or project `opencode.json`:
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"instructions": [
|
|
16
|
+
"~/dev/agtmls/system-prompts/_base.md",
|
|
17
|
+
"~/dev/agtmls/skills/*/SKILL.md"
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
One glob covers the catalog: the skill tree is flat, so every skill is
|
|
23
|
+
exactly one level under `skills/`.
|
|
24
|
+
|
|
25
|
+
This loads every skill body eagerly, which spends context that a native
|
|
26
|
+
progressive-disclosure install would not. Prefer a narrower glob, or
|
|
27
|
+
export a profile and point `instructions` at that instead:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
python3 scripts/agtmls.py export --provider generic --profile minimal --out-dir dist
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Verify by asking OpenCode: "which AgtMLS skill applies here?"
|
agtmls-0.0.3/CATALOG.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
|
|
2
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
3
|
+
<!-- Generated by scripts/generate-catalog.py; do not edit by hand. -->
|
|
4
|
+
|
|
5
|
+
# AgtMLS Catalog
|
|
6
|
+
|
|
7
|
+
Registry version: `0.0.3`
|
|
8
|
+
Skills: `26`
|
|
9
|
+
Commands: `1`
|
|
10
|
+
|
|
11
|
+
## Skills
|
|
12
|
+
|
|
13
|
+
| Name | Bundle | Tags | Path |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `agent-loop-design` | `loops` | loops, validation | `skills/agent-loop-design` |
|
|
16
|
+
| `ai-supply-chain-security` | `security` | release, security, validation | `skills/ai-supply-chain-security` |
|
|
17
|
+
| `cross-language-port` | `general` | porting | `skills/cross-language-port` |
|
|
18
|
+
| `handoff` | `general` | validation | `skills/handoff` |
|
|
19
|
+
| `noyalib-architecture-contract` | `noyalib` | architecture, ci, noyalib | `skills/noyalib-architecture-contract` |
|
|
20
|
+
| `noyalib-build-and-env` | `noyalib` | coverage, diagnostics, noyalib, qa | `skills/noyalib-build-and-env` |
|
|
21
|
+
| `noyalib-change-control` | `noyalib` | ci, noyalib, release, security | `skills/noyalib-change-control` |
|
|
22
|
+
| `noyalib-ci-and-release` | `noyalib` | ci, noyalib, release | `skills/noyalib-ci-and-release` |
|
|
23
|
+
| `noyalib-config-and-flags` | `noyalib` | config, noyalib | `skills/noyalib-config-and-flags` |
|
|
24
|
+
| `noyalib-coverage-campaign` | `noyalib` | coverage, debugging, noyalib | `skills/noyalib-coverage-campaign` |
|
|
25
|
+
| `noyalib-debugging-playbook` | `noyalib` | debugging, noyalib, qa | `skills/noyalib-debugging-playbook` |
|
|
26
|
+
| `noyalib-diagnostics-and-tooling` | `noyalib` | coverage, diagnostics, noyalib, validation | `skills/noyalib-diagnostics-and-tooling` |
|
|
27
|
+
| `noyalib-docs-and-writing` | `noyalib` | architecture, ci, docs, noyalib, qa, release | `skills/noyalib-docs-and-writing` |
|
|
28
|
+
| `noyalib-external-positioning` | `noyalib` | docs, noyalib, release, yaml | `skills/noyalib-external-positioning` |
|
|
29
|
+
| `noyalib-failure-archaeology` | `noyalib` | ci, noyalib, validation | `skills/noyalib-failure-archaeology` |
|
|
30
|
+
| `noyalib-research-frontier` | `noyalib` | noyalib, research, validation | `skills/noyalib-research-frontier` |
|
|
31
|
+
| `noyalib-validation-and-qa` | `noyalib` | diagnostics, noyalib, qa, validation | `skills/noyalib-validation-and-qa` |
|
|
32
|
+
| `pr-review-and-release` | `engineering` | ci, docs, engineering, release | `skills/pr-review-and-release` |
|
|
33
|
+
| `receiving-code-review` | `general` | ci | `skills/receiving-code-review` |
|
|
34
|
+
| `systematic-debugging` | `general` | debugging, qa | `skills/systematic-debugging` |
|
|
35
|
+
| `test-driven-development` | `general` | qa | `skills/test-driven-development` |
|
|
36
|
+
| `using-agtmls` | `general` | noyalib, porting, routing | `skills/using-agtmls` |
|
|
37
|
+
| `verification-before-completion` | `general` | porting, qa, validation | `skills/verification-before-completion` |
|
|
38
|
+
| `web-research-and-source-triage` | `web-reach` | ci, debugging, docs, research, validation, web-reach | `skills/web-research-and-source-triage` |
|
|
39
|
+
| `writing-plans` | `general` | docs | `skills/writing-plans` |
|
|
40
|
+
| `yaml-domain-reference` | `noyalib` | config, noyalib, yaml | `skills/yaml-domain-reference` |
|
|
41
|
+
|
|
42
|
+
## Commands
|
|
43
|
+
|
|
44
|
+
| Name | Description | Path |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| `agtmls` | Run the local AgtMLS registry health check. | `commands/agtmls.md` |
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
|
|
2
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
3
|
+
|
|
4
|
+
# Changelog
|
|
5
|
+
|
|
6
|
+
All notable changes to AgtMLS are recorded here.
|
|
7
|
+
|
|
8
|
+
## Unreleased
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **A real unit-test suite for the tooling** — 65 tests across 12 cases
|
|
13
|
+
covering the spec validator, collision maths, frontmatter derivation,
|
|
14
|
+
packaging layout, manifest generation, index parsing, and the packaged CLI.
|
|
15
|
+
The 57-check gate validates repository *data*; these validate the
|
|
16
|
+
validators, which is the failure mode the gate cannot see.
|
|
17
|
+
- `validate-spec-conformance.py`, running the Agent Skills **reference**
|
|
18
|
+
implementation (`skills-ref`) over every skill. Skips cleanly when the
|
|
19
|
+
optional dependency is absent; CI installs it, so it always runs on a PR.
|
|
20
|
+
- `validate-licence-headers.py`, enforcing an SPDX header on every file that
|
|
21
|
+
can carry one and `license:` frontmatter on the two classes that cannot
|
|
22
|
+
(`SKILL.md`, `commands/*.md` must start with `---` at byte 0).
|
|
23
|
+
- `docs/adr/` with the first four architecture decision records, applying to
|
|
24
|
+
AgtMLS the ADR discipline it already requires of the projects it serves.
|
|
25
|
+
- `.github/CODEOWNERS`, `docs/cli.md`, `docs/checks.md`.
|
|
26
|
+
- Signed build provenance on releases via `actions/attest-build-provenance`,
|
|
27
|
+
plus a post-build step that installs the wheel and asserts it reports the
|
|
28
|
+
released version.
|
|
29
|
+
- **Six discipline skills**, general (`"bundle": null`) so they install in
|
|
30
|
+
every repo: `writing-plans`, `test-driven-development`,
|
|
31
|
+
`systematic-debugging`, `verification-before-completion`,
|
|
32
|
+
`receiving-code-review`, and `handoff`. They are
|
|
33
|
+
language- and project-agnostic, compose in phase order, and defer to a
|
|
34
|
+
project bundle's own rules on specifics. Adds a `discipline` install/export
|
|
35
|
+
profile; the `polyglot`, `noyalib`, `security`, and `research` profiles now
|
|
36
|
+
carry them too.
|
|
37
|
+
- **PyPI packaging**: `uvx agtmls ...` / `pipx install agtmls`, with the whole
|
|
38
|
+
registry bundled in the wheel under `agtmls/_registry/` and no runtime
|
|
39
|
+
dependencies. `scripts/validate-packaging.py` gates the force-include list
|
|
40
|
+
so a wheel cannot ship a registry the CLI can't find.
|
|
41
|
+
- `--copy` on `setup-workspace.sh` and `agtmls install`, materialising real
|
|
42
|
+
files instead of symlinks. Package installs default to it, because a wheel
|
|
43
|
+
in an ephemeral uvx cache cannot be the target of a durable symlink.
|
|
44
|
+
- `.claude-plugin/marketplace.json`, so the registry is installable with
|
|
45
|
+
`/plugin marketplace add sebastienrousseau/agtmls`.
|
|
46
|
+
- `scripts/sync-skill-frontmatter.py`, which mirrors `metadata.json` into the
|
|
47
|
+
spec's `compatibility`, `metadata`, and `allowed-tools` frontmatter fields.
|
|
48
|
+
Runs `--check` in CI so the sidecar and the frontmatter cannot drift.
|
|
49
|
+
- `allowed_tools` in `index.json`, derived from each skill's `safety_policy`.
|
|
50
|
+
- A `plugin_targets` section in `providers.json` for runtimes that consume a
|
|
51
|
+
plugin manifest rather than a symlink install or a Markdown export:
|
|
52
|
+
Antigravity, Codex, Cursor, Gemini CLI, Kimi Code, and OpenCode.
|
|
53
|
+
- `scripts/generate-plugin-manifests.py` (and `agtmls.py plugin-manifests`),
|
|
54
|
+
which generates all eight manifests from `.claude-plugin/plugin.json` and
|
|
55
|
+
the skill tree so no runtime drifts behind a version bump or a new bundle.
|
|
56
|
+
Runs `--check` in CI.
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
|
|
60
|
+
- CI runs a matrix of Python 3.10-3.13 across Linux and macOS. It previously
|
|
61
|
+
tested one interpreter on one OS while declaring `requires-python >=3.10`,
|
|
62
|
+
so the 3.10 code path had never executed.
|
|
63
|
+
- README split: the command reference and the check list moved to
|
|
64
|
+
`docs/cli.md` and `docs/checks.md`; CONTRIBUTING rewritten around the gate,
|
|
65
|
+
the skill lifecycle, and what a good skill looks like.
|
|
66
|
+
- **The skill tree is now flat**: every skill is `skills/<name>/SKILL.md`.
|
|
67
|
+
Bundle membership moved from a parent directory to a `bundle` field in each
|
|
68
|
+
skill's `metadata.json` (`null` for general skills). Agent runtimes scan
|
|
69
|
+
their skills path *non-recursively*, so nested skills were invisible to any
|
|
70
|
+
runtime without array-valued `skills` support — Codex, Cursor, Gemini CLI,
|
|
71
|
+
and Antigravity among them. Every manifest now points at a single
|
|
72
|
+
`./skills`. `--bundle` scoping in `setup-workspace.sh` is unchanged in
|
|
73
|
+
behaviour and now resolves through metadata.
|
|
74
|
+
- `skills/noyalib/README.md` moved to `references/noyalib-bundle.md`.
|
|
75
|
+
- `validate-version-policy.py` and `bump-version.py` derive their metadata
|
|
76
|
+
file lists from the skill tree instead of hardcoding them, so a new skill
|
|
77
|
+
cannot escape the version gate.
|
|
78
|
+
- `validate-skills.py` now enforces the agentskills.io Agent Skills spec: the
|
|
79
|
+
closed six-key frontmatter set, the `name` length and hyphen rules, the
|
|
80
|
+
`compatibility` length cap, flat string `metadata`, and a 500-line
|
|
81
|
+
`SKILL.md` budget.
|
|
82
|
+
- `validate-plugin-manifest.py` also validates the marketplace catalog, and
|
|
83
|
+
fails if a nested skill ever reappears — such a skill would be invisible to
|
|
84
|
+
every runtime. Before the tree was flattened, `plugin.json`'s single
|
|
85
|
+
`./skills` path exposed only the two top-level skills; the other 18 never
|
|
86
|
+
loaded for anyone installing as a plugin.
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
|
|
90
|
+
- `generate-skill-index.py` did not unquote the **last** frontmatter key —
|
|
91
|
+
only the mid-loop flush was patched. Invisible for skills (where `metadata`
|
|
92
|
+
is last) but wrong for `commands/*.md`, where `description` is the only key.
|
|
93
|
+
Found by the new unit tests.
|
|
94
|
+
- Three checks (`validate-packaging.py`, `sync-skill-frontmatter.py`,
|
|
95
|
+
`generate-plugin-manifests.py`) were in `checks.json` and the local runner
|
|
96
|
+
but **absent from CI**, which enumerates steps by hand.
|
|
97
|
+
`validate-check-manifest.py` now enforces manifest/runner/CI parity.
|
|
98
|
+
- `generate-skill-index.py` unquotes YAML scalars, so quoted descriptions no
|
|
99
|
+
longer carry their quotes into `index.json` and every downstream export.
|
|
100
|
+
- `agtmls-doctor.py` handles array-valued `skills`/`commands` manifest paths.
|
|
101
|
+
|
|
102
|
+
### Removed
|
|
103
|
+
|
|
104
|
+
- Non-spec `date:` frontmatter keys from three noyalib skills, and the dead
|
|
105
|
+
`date` field from the `index.json` schema.
|
|
106
|
+
|
|
107
|
+
## 0.0.3 - 2026-07-21
|
|
108
|
+
|
|
109
|
+
### Changed
|
|
110
|
+
|
|
111
|
+
- Bumped release metadata through the guarded patch-line release flow.
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
## 0.0.2 - 2026-07-21
|
|
115
|
+
|
|
116
|
+
### Changed
|
|
117
|
+
|
|
118
|
+
- Bumped release metadata through the guarded patch-line release flow.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
## 0.0.1 - 2026-07-20
|
|
122
|
+
|
|
123
|
+
### Added
|
|
124
|
+
|
|
125
|
+
- Registry `index.json` generation and validation.
|
|
126
|
+
- Full routing eval coverage for all current skills.
|
|
127
|
+
- Behavioral smoke evals for all current skills.
|
|
128
|
+
- Local `agtmls` dispatcher for registry checks, install flows, provider export,
|
|
129
|
+
evolution proposals, evidence recording, benchmarks, SBOM, provenance, MCP
|
|
130
|
+
resources, and agent-card generation.
|
|
131
|
+
- Doctor checks for registry health and consumer-repo installs.
|
|
132
|
+
- Skill metadata sidecars with bundle inheritance.
|
|
133
|
+
- Lifecycle metadata and validation.
|
|
134
|
+
- Command validation and plugin command-path consistency checks.
|
|
135
|
+
- Security and contribution policy documents.
|
|
136
|
+
- Provider export/install adapters for Claude, Codex, Aider, Cursor, GitHub
|
|
137
|
+
Copilot, Continue, Windsurf, Zed, OpenAI, Anthropic, and Google Gemini
|
|
138
|
+
style targets.
|
|
139
|
+
- Generated `CATALOG.md`, docs site, `agent-card.json`, `mcp-resources.json`,
|
|
140
|
+
`SBOM.spdx.json`, and deterministic `provenance.json`.
|
|
141
|
+
- Governance, release, smoke, behavioral, routing, and benchmark checks in the
|
|
142
|
+
release gate.
|
|
143
|
+
- 2026-ready skill bundles for agent loop design, AI supply-chain security, web
|
|
144
|
+
research/source triage, PR/release workflow, and project-specific noyalib
|
|
145
|
+
operations.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<!-- SPDX-FileCopyrightText: 2026 Sebastien Rousseau -->
|
|
2
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
3
|
+
|
|
4
|
+
# Contributing to AgtMLS
|
|
5
|
+
|
|
6
|
+
AgtMLS is a registry, so the bar is unusual: a bad skill does not crash, it
|
|
7
|
+
quietly makes every agent that loads it worse. Most of the process below
|
|
8
|
+
exists to catch that.
|
|
9
|
+
|
|
10
|
+
## The one command
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
python3 scripts/agtmls.py check
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
57 checks. It is the same gate CI runs — `validate-check-manifest.py` fails
|
|
17
|
+
if `checks.json`, `scripts/run-all-checks.py`, and
|
|
18
|
+
`.github/workflows/validate.yml` ever disagree, so a green local run means a
|
|
19
|
+
green CI run.
|
|
20
|
+
|
|
21
|
+
Two checks need optional extras and skip cleanly without them:
|
|
22
|
+
|
|
23
|
+
| Check | Extra | Install |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| `validate-spec-conformance.py` | reference validator | `pip install skills-ref` |
|
|
26
|
+
| `smoke-live-providers.py` | provider credentials | export the relevant `*_API_KEY` |
|
|
27
|
+
|
|
28
|
+
CI installs `skills-ref`, so spec conformance is always enforced on a pull
|
|
29
|
+
request even if you skipped it locally.
|
|
30
|
+
|
|
31
|
+
## Adding a skill
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
python3 scripts/agtmls.py scaffold-skill my-skill # general
|
|
35
|
+
python3 scripts/agtmls.py scaffold-skill my-skill --bundle x # project-scoped
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
That writes `skills/my-skill/` with `SKILL.md`, `reference.md`,
|
|
39
|
+
`metadata.json`, and both eval cases. Then:
|
|
40
|
+
|
|
41
|
+
1. **Write the description first.** It is the whole routing surface — the
|
|
42
|
+
model decides whether to load your skill from it alone. Say what the skill
|
|
43
|
+
does *and when to load it*, using words a user would actually type.
|
|
44
|
+
2. **Write the body.** Keep `SKILL.md` under 500 lines and put depth in
|
|
45
|
+
`reference.md`. The body is loaded in full on activation; the reference is
|
|
46
|
+
loaded only when the skill asks for it.
|
|
47
|
+
3. **Fill in `metadata.json`**, especially `safety_policy`. It is generated
|
|
48
|
+
into portable frontmatter, so it is what a Cursor or Gemini user sees.
|
|
49
|
+
Never hand-edit `license`, `compatibility`, `allowed-tools`, or `metadata`
|
|
50
|
+
in `SKILL.md` — run `sync-skill-frontmatter.py --write`.
|
|
51
|
+
4. **Write the eval cases.** Routing positives are prompts that *must* reach
|
|
52
|
+
your skill; negatives are prompts that must not. Behavioral cases assert
|
|
53
|
+
that load-bearing content stays present.
|
|
54
|
+
5. **Regenerate and check:**
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
python3 scripts/sync-skill-frontmatter.py --write
|
|
58
|
+
python3 scripts/generate-skill-index.py --write
|
|
59
|
+
python3 scripts/agtmls.py check
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### What a good skill looks like
|
|
63
|
+
|
|
64
|
+
- **One rule, stated once.** The best skills have a single load-bearing
|
|
65
|
+
sentence that the rest of the body serves.
|
|
66
|
+
- **Triggers, not topics.** "Load when X happens" beats "about X".
|
|
67
|
+
- **A `When not to use` section.** Skills that never decline get loaded
|
|
68
|
+
wrongly and dilute the router.
|
|
69
|
+
- **Concrete over abstract.** Commands, tables, worked examples.
|
|
70
|
+
- **Defers to project bundles.** A general skill states the floor; a project
|
|
71
|
+
skill overrides it on specifics.
|
|
72
|
+
|
|
73
|
+
## Skill lifecycle
|
|
74
|
+
|
|
75
|
+
Skills move through four stages (`lifecycle.json`), each with exit criteria:
|
|
76
|
+
|
|
77
|
+
| Stage | Requires | Exit criteria |
|
|
78
|
+
| --- | --- | --- |
|
|
79
|
+
| proposal | `.agtmls/proposals/<skill>.md` | human-reviewed trigger and safety boundaries |
|
|
80
|
+
| draft | `SKILL.md`, routing eval | validator, routing eval, collision check pass |
|
|
81
|
+
| hardened | behavioral eval | behavioral eval passes, index regenerated |
|
|
82
|
+
| published | `index.json` | doctor clean, CI green, docs updated |
|
|
83
|
+
|
|
84
|
+
External skills enter as drafts via `agtmls.py import-skill`, never directly
|
|
85
|
+
as hardened.
|
|
86
|
+
|
|
87
|
+
## Architecture decisions
|
|
88
|
+
|
|
89
|
+
Load-bearing or hard-to-reverse changes need an ADR in `docs/adr/` — the skill
|
|
90
|
+
contract, the on-disk layout, distribution, or the permission posture. See
|
|
91
|
+
`docs/adr/README.md` for when one is required and the template. Routine work
|
|
92
|
+
does not need one.
|
|
93
|
+
|
|
94
|
+
## Changing the tooling
|
|
95
|
+
|
|
96
|
+
`scripts/` is covered by `scripts/run-unit-tests.py`. If you change a
|
|
97
|
+
validator's logic, add a test that fails without your change: the gate checks
|
|
98
|
+
repository *data*, so a checker that always returns 0 is invisible to it.
|
|
99
|
+
Tests run on Python 3.10–3.13 across Linux and macOS in CI.
|
|
100
|
+
|
|
101
|
+
## Style
|
|
102
|
+
|
|
103
|
+
- **Python: stdlib only.** The zero-dependency guarantee is what makes
|
|
104
|
+
`uvx agtmls` a single fast download; `validate-packaging.py` enforces it.
|
|
105
|
+
- **Shell:** `set -euo pipefail`, 2-space indent.
|
|
106
|
+
- **Licence on every file.** Markdown gets an SPDX header — except `SKILL.md`
|
|
107
|
+
and `commands/*.md`, which must begin with `---` at byte 0 and declare
|
|
108
|
+
`license:` in frontmatter instead. `validate-licence-headers.py` enforces
|
|
109
|
+
whichever form applies.
|
|
110
|
+
- **Conventional Commits.**
|
|
111
|
+
|
|
112
|
+
## Never edit by hand
|
|
113
|
+
|
|
114
|
+
These are generated and drift-checked:
|
|
115
|
+
|
|
116
|
+
`index.json` · `CATALOG.md` · `site/index.html` · `agent-card.json` ·
|
|
117
|
+
`mcp-resources.json` · `SBOM.spdx.json` · `provenance.json` ·
|
|
118
|
+
`plugin.json` · `gemini-extension.json` · `GEMINI.md` ·
|
|
119
|
+
`.codex-plugin/` · `.cursor-plugin/` · `.kimi-plugin/` · `.agents/` ·
|
|
120
|
+
`.opencode/INSTALL.md` · the generated frontmatter fields in every `SKILL.md`
|
|
121
|
+
|
|
122
|
+
## Reporting security issues
|
|
123
|
+
|
|
124
|
+
See `SECURITY.md`. Do not open a public issue for a vulnerability.
|
agtmls-0.0.3/GEMINI.md
ADDED
agtmls-0.0.3/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sebastien Rousseau
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|