@raishin/vanguard-frontier-agentic 1.3.0 → 1.4.0
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.
- package/README.md +23 -1
- package/agents/kubernetes/kubernetes-live-admission-policy-guard-agent/metadata.json +2 -1
- package/agents/kubernetes/kubernetes-live-argocd-sync-guard-agent/metadata.json +2 -1
- package/agents/kubernetes/kubernetes-live-mesh-policy-guard-agent/metadata.json +2 -1
- package/agents/kubernetes/kubernetes-live-network-policy-guard-agent/metadata.json +2 -1
- package/agents/kubernetes/kubernetes-live-velero-restore-guard-agent/metadata.json +2 -1
- package/agents/kubernetes/kubernetes-psa-review-agent/metadata.json +2 -1
- package/agents/terraform/terraform-reviewer/AGENT.md +2 -1
- package/catalog/skill-manifest.json +414 -414
- package/package.json +23 -4
- package/schemas/AGENTS.md +14 -0
- package/schemas/agent.frontmatter.schema.json +89 -0
- package/schemas/agent.schema.json +8 -0
- package/schemas/skill.frontmatter.schema.json +95 -0
- package/scripts/apply-skill-allowed-tools.py +142 -0
- package/scripts/backfill-skill-metadata.py +410 -0
- package/scripts/export-marketplace-agents.mjs +175 -0
- package/skills/argocd/argo-rollouts-progressive-delivery-review/SKILL.md +3 -0
- package/skills/argocd/argocd-gitops-review/SKILL.md +3 -0
- package/skills/aws/aws-agentcore/SKILL.md +3 -0
- package/skills/aws/aws-api-edge-delivery-review/SKILL.md +3 -0
- package/skills/aws/aws-bedrock-agent-security-governor/SKILL.md +3 -0
- package/skills/aws/aws-change-impact-advisor/SKILL.md +3 -0
- package/skills/aws/aws-ci-cd-release-engineer/SKILL.md +3 -0
- package/skills/aws/aws-compliance-evidence-mapper/SKILL.md +3 -0
- package/skills/aws/aws-cost-anomaly-watch-coordinator/SKILL.md +3 -0
- package/skills/aws/aws-cost-optimization-governor/SKILL.md +3 -0
- package/skills/aws/aws-daily-operations-briefing-coordinator/SKILL.md +3 -0
- package/skills/aws/aws-data-protection-backup-steward/SKILL.md +3 -0
- package/skills/aws/aws-deployment-hotfix-operator/SKILL.md +3 -0
- package/skills/aws/aws-devops-agent-skill-designer/SKILL.md +3 -0
- package/skills/aws/aws-dynamodb-data-modeling-performance-review/SKILL.md +3 -0
- package/skills/aws/aws-ec2-compute-operations-steward/SKILL.md +3 -0
- package/skills/aws/aws-ecs-fargate-platform-operator/SKILL.md +3 -0
- package/skills/aws/aws-ecs-service-remediation-operator/SKILL.md +3 -0
- package/skills/aws/aws-eks-platform-operator/SKILL.md +3 -0
- package/skills/aws/aws-event-driven-architecture-review/SKILL.md +3 -0
- package/skills/aws/aws-generative-ai-developer/SKILL.md +3 -0
- package/skills/aws/aws-iac-change-safety-review/SKILL.md +3 -0
- package/skills/aws/aws-iac-patch-executor/SKILL.md +3 -0
- package/skills/aws/aws-iam-least-privilege-review/SKILL.md +3 -0
- package/skills/aws/aws-kms-secrets-lifecycle-steward/SKILL.md +3 -0
- package/skills/aws/aws-landing-zone-governor/SKILL.md +3 -0
- package/skills/aws/aws-live-deployment-guarded-operator/SKILL.md +3 -0
- package/skills/aws/aws-live-ecs-rollout-guard/SKILL.md +3 -0
- package/skills/aws/aws-live-iac-change-guard/SKILL.md +3 -0
- package/skills/aws/aws-live-pipeline-approval-operator/SKILL.md +3 -0
- package/skills/aws/aws-live-serverless-release-guard/SKILL.md +3 -0
- package/skills/aws/aws-maestro/SKILL.md +3 -0
- package/skills/aws/aws-migration-cutover-architect/SKILL.md +3 -0
- package/skills/aws/aws-network-architect/SKILL.md +3 -0
- package/skills/aws/aws-non-destructive-task-automation-advisor/SKILL.md +3 -0
- package/skills/aws/aws-observability-incident-responder/SKILL.md +3 -0
- package/skills/aws/aws-pipeline-fix-operator/SKILL.md +3 -0
- package/skills/aws/aws-private-ca-issuer-review/SKILL.md +3 -0
- package/skills/aws/aws-rds-aurora-performance-investigator/SKILL.md +3 -0
- package/skills/aws/aws-resilience-bcdr-review/SKILL.md +3 -0
- package/skills/aws/aws-s3-data-perimeter-governor/SKILL.md +3 -0
- package/skills/aws/aws-security-posture-hardening/SKILL.md +3 -0
- package/skills/aws/aws-serverless-production-readiness/SKILL.md +3 -0
- package/skills/aws/aws-serverless-rollout-corrector/SKILL.md +3 -0
- package/skills/aws/aws-solution-architect/SKILL.md +3 -0
- package/skills/aws/aws-ticket-triage-escalation-coordinator/SKILL.md +3 -0
- package/skills/azure/azure-ai-foundry-ops-governor/SKILL.md +3 -0
- package/skills/azure/azure-aks-platform-operator/SKILL.md +3 -0
- package/skills/azure/azure-app-service-production-readiness/SKILL.md +3 -0
- package/skills/azure/azure-cosmosdb-application-developer/SKILL.md +3 -0
- package/skills/azure/azure-cosmosdb-performance-investigator/SKILL.md +3 -0
- package/skills/azure/azure-cosmosdb-platform-operator/SKILL.md +3 -0
- package/skills/azure/azure-cost-estimation-review/SKILL.md +3 -0
- package/skills/azure/azure-cost-optimization-governor/SKILL.md +3 -0
- package/skills/azure/azure-entra-id-specialist/SKILL.md +3 -0
- package/skills/azure/azure-governance-policy-guardrails/SKILL.md +3 -0
- package/skills/azure/azure-identity-governance-review/SKILL.md +3 -0
- package/skills/azure/azure-key-vault-secret-lifecycle-auditor/SKILL.md +3 -0
- package/skills/azure/azure-keyvault-certificate-issuer-review/SKILL.md +3 -0
- package/skills/azure/azure-landing-zone-architect/SKILL.md +3 -0
- package/skills/azure/azure-live-aks-rollout-guard/SKILL.md +3 -0
- package/skills/azure/azure-live-app-service-slot-swap-guard/SKILL.md +3 -0
- package/skills/azure/azure-live-arm-deployment-stack-guard/SKILL.md +3 -0
- package/skills/azure/azure-live-cost-budget-action-guard/SKILL.md +3 -0
- package/skills/azure/azure-live-entra-role-assignment-guard/SKILL.md +3 -0
- package/skills/azure/azure-live-keyvault-rotation-purge-guard/SKILL.md +3 -0
- package/skills/azure/azure-live-pim-jit-activation-guard/SKILL.md +3 -0
- package/skills/azure/azure-maestro/SKILL.md +3 -0
- package/skills/azure/azure-migrate-landing-zone-cutover/SKILL.md +3 -0
- package/skills/azure/azure-network-topology-review/SKILL.md +3 -0
- package/skills/azure/azure-observability-investigator/SKILL.md +3 -0
- package/skills/azure/azure-platform-automation-devops/SKILL.md +3 -0
- package/skills/azure/azure-private-endpoint-adoption-planner/SKILL.md +3 -0
- package/skills/azure/azure-rbac-review/SKILL.md +3 -0
- package/skills/azure/azure-resilience-bcdr-review/SKILL.md +3 -0
- package/skills/azure/azure-resource-health-incident-triage/SKILL.md +3 -0
- package/skills/azure/azure-role-selector/SKILL.md +3 -0
- package/skills/azure/azure-security-posture-hardening/SKILL.md +3 -0
- package/skills/azure/azure-subscription-resource-organization/SKILL.md +3 -0
- package/skills/backstage/backstage-scaffolder-template-review/SKILL.md +3 -0
- package/skills/cert-manager/cert-manager-issuer-trust-review/SKILL.md +3 -0
- package/skills/cilium/cilium-network-policy-review/SKILL.md +3 -0
- package/skills/falco/falco-runtime-threat-rules-review/SKILL.md +3 -0
- package/skills/finops/finops-cloud-price-advisor/SKILL.md +3 -0
- package/skills/fluxcd/fluxcd-kustomization-helmrelease-review/SKILL.md +3 -0
- package/skills/istio/istio-ambient-mesh-review/SKILL.md +3 -0
- package/skills/kubernetes/external-secrets-operator-review/SKILL.md +3 -0
- package/skills/kubernetes/kubecost-chargeback-allocation-review/SKILL.md +3 -0
- package/skills/kubernetes/kubernetes-live-rbac-mutation-guard/SKILL.md +3 -0
- package/skills/kubernetes/kubernetes-maestro/SKILL.md +3 -0
- package/skills/kubernetes/kubernetes-pod-security-admission-review/SKILL.md +3 -0
- package/skills/kubernetes/kubernetes-pod-spec-review/SKILL.md +3 -0
- package/skills/kubernetes/kubernetes-rbac-review/SKILL.md +3 -0
- package/skills/kubernetes/kubernetes-workload-identity-review/SKILL.md +3 -0
- package/skills/kyverno/kyverno-policy-review/SKILL.md +3 -0
- package/skills/oci/oci-autonomous-database-architect/SKILL.md +3 -0
- package/skills/oci/oci-certificates-issuer-review/SKILL.md +3 -0
- package/skills/oci/oci-cloud-guard-responder/SKILL.md +3 -0
- package/skills/oci/oci-compute-instance-agent-operator/SKILL.md +3 -0
- package/skills/oci/oci-compute-platform-operator/SKILL.md +3 -0
- package/skills/oci/oci-cost-finops-analyst/SKILL.md +3 -0
- package/skills/oci/oci-database-platform-dba/SKILL.md +3 -0
- package/skills/oci/oci-dbtools-sql-analyst/SKILL.md +3 -0
- package/skills/oci/oci-devops-container-platform-engineer/SKILL.md +3 -0
- package/skills/oci/oci-exadata-database-architect/SKILL.md +3 -0
- package/skills/oci/oci-exadata-platform-architect/SKILL.md +3 -0
- package/skills/oci/oci-fusion-apps-environment-operator/SKILL.md +3 -0
- package/skills/oci/oci-goldengate-replication-operator/SKILL.md +3 -0
- package/skills/oci/oci-identity-access-governor/SKILL.md +3 -0
- package/skills/oci/oci-iot-digital-twin-engineer/SKILL.md +3 -0
- package/skills/oci/oci-limits-capacity-planner/SKILL.md +3 -0
- package/skills/oci/oci-live-autonomous-db-lifecycle-guard/SKILL.md +3 -0
- package/skills/oci/oci-live-cost-budget-runaway-guard/SKILL.md +3 -0
- package/skills/oci/oci-live-iam-policy-compartment-guard/SKILL.md +3 -0
- package/skills/oci/oci-live-network-security-rule-guard/SKILL.md +3 -0
- package/skills/oci/oci-live-oke-rollout-guard/SKILL.md +3 -0
- package/skills/oci/oci-live-resource-manager-stack-guard/SKILL.md +3 -0
- package/skills/oci/oci-live-vault-key-destruction-guard/SKILL.md +3 -0
- package/skills/oci/oci-load-balancer-traffic-engineer/SKILL.md +3 -0
- package/skills/oci/oci-maestro/SKILL.md +3 -0
- package/skills/oci/oci-migration-cutover-architect/SKILL.md +3 -0
- package/skills/oci/oci-multi-cloud-architect/SKILL.md +3 -0
- package/skills/oci/oci-mysql-heatwave-ai-specialist/SKILL.md +3 -0
- package/skills/oci/oci-network-architect/SKILL.md +3 -0
- package/skills/oci/oci-observability-incident-responder/SKILL.md +3 -0
- package/skills/oci/oci-recovery-service-operator/SKILL.md +3 -0
- package/skills/oci/oci-registry-artifact-governor/SKILL.md +3 -0
- package/skills/oci/oci-resource-search-inventory-analyst/SKILL.md +3 -0
- package/skills/oci/oci-security-compliance-reviewer/SKILL.md +3 -0
- package/skills/oci/oci-solution-architect/SKILL.md +3 -0
- package/skills/oci/oci-storage-backup-steward/SKILL.md +3 -0
- package/skills/oci/oci-support-incident-coordinator/SKILL.md +3 -0
- package/skills/oci/oracle-oci-mcp-grounded-advisor/SKILL.md +3 -0
- package/skills/opentelemetry/opentelemetry-collector-config-review/SKILL.md +3 -0
- package/skills/prometheus/prometheus-alerting-cardinality-review/SKILL.md +3 -0
- package/skills/sigstore/sigstore-cosign-supply-chain-review/SKILL.md +3 -0
- package/skills/terraform/terraform-maestro/SKILL.md +3 -0
- package/skills/velero/velero-backup-restore-guard/SKILL.md +3 -0
package/package.json
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raishin/vanguard-frontier-agentic",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Cloud and zero-trust agentic workflow marketplace for skills, agents, rules, MCP references, and compliance-aware architecture.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/Raishin/vanguard-frontier-agentic.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/Raishin/vanguard-frontier-agentic#readme",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/Raishin/vanguard-frontier-agentic/issues"
|
|
13
|
+
},
|
|
6
14
|
"type": "commonjs",
|
|
7
15
|
"bin": {
|
|
8
16
|
"vfa-export-agents": "./scripts/export-marketplace-agents.mjs"
|
|
@@ -28,7 +36,17 @@
|
|
|
28
36
|
"validate:aws": "python3 tests/validate-aws-skill-quality.py && python3 tests/validate-aws-progressive-disclosure.py",
|
|
29
37
|
"validate:catalog": "python3 tests/validate-catalog.py",
|
|
30
38
|
"validate:links": "python3 tests/validate-links.py --offline",
|
|
31
|
-
"validate": "
|
|
39
|
+
"validate:allowed-tools": "python3 tests/validate-skill-allowed-tools.py",
|
|
40
|
+
"validate:skill-schema": "python3 tests/validate-skill-frontmatter-schema.py",
|
|
41
|
+
"validate:agent-schema": "python3 tests/validate-agent-frontmatter-schema.py",
|
|
42
|
+
"test:copilot-bundling": "python3 tests/test-copilot-skill-bundling.py",
|
|
43
|
+
"test:gemini-bundling": "python3 tests/test-gemini-skill-bundling.py",
|
|
44
|
+
"test:cursor-kiro-notices": "node tests/export-cursor-kiro-skill-notice.test.mjs",
|
|
45
|
+
"validate": "npm run validate:catalog && npm run validate:aws && npm run manifest:check && npm run validate:allowed-tools && npm run validate:skill-schema && npm run validate:agent-schema && npm run validate:links",
|
|
46
|
+
"release:sbom": "command -v syft >/dev/null 2>&1 && syft scan dir:. -o spdx-json=sbom.spdx.json || echo 'syft not installed; SBOM is generated in CI by anchore/sbom-action'",
|
|
47
|
+
"lint:md": "npx --yes markdownlint-cli2 \"**/*.md\" \"#node_modules\" \"#.git\" \"#.code-review-graph\" \"#CHANGELOG.md\"",
|
|
48
|
+
"lint:spell": "codespell",
|
|
49
|
+
"lint:docs": "npm run lint:md && npm run lint:spell"
|
|
32
50
|
},
|
|
33
51
|
"devDependencies": {
|
|
34
52
|
"semantic-release": "25.0.3",
|
|
@@ -38,10 +56,11 @@
|
|
|
38
56
|
"@semantic-release/github": "12.0.6",
|
|
39
57
|
"@semantic-release/commit-analyzer": "13.0.1",
|
|
40
58
|
"@semantic-release/release-notes-generator": "14.1.0",
|
|
41
|
-
"conventional-changelog-conventionalcommits": "
|
|
59
|
+
"conventional-changelog-conventionalcommits": "9.3.1"
|
|
42
60
|
},
|
|
43
61
|
"publishConfig": {
|
|
44
|
-
"access": "public"
|
|
62
|
+
"access": "public",
|
|
63
|
+
"provenance": true
|
|
45
64
|
},
|
|
46
65
|
"keywords": [
|
|
47
66
|
"agentic",
|
package/schemas/AGENTS.md
CHANGED
|
@@ -9,3 +9,17 @@
|
|
|
9
9
|
- Update `docs/release-versioning.md` if schema compatibility policy changes.
|
|
10
10
|
- Run `npm run validate` after schema edits.
|
|
11
11
|
|
|
12
|
+
## Schemas
|
|
13
|
+
|
|
14
|
+
- `skill.frontmatter.schema.json` — required SKILL.md frontmatter contract;
|
|
15
|
+
enforced by `tests/validate-skill-frontmatter-schema.py` (`validate:skill-schema`).
|
|
16
|
+
- `agent.schema.json` — agent `metadata.json` contract (id, provider, harnesses,
|
|
17
|
+
source_type, official_docs, security_notes, last_verified, companion_skills).
|
|
18
|
+
- `agent.frontmatter.schema.json` — required AGENT.md frontmatter contract.
|
|
19
|
+
Empirically derived from the 141-file corpus: only `metadata.author` and
|
|
20
|
+
`metadata.version` are required. Optional fields (`name`, `description`,
|
|
21
|
+
`model`, `allowed-tools`, `tools`, `color`) are typed when present, and
|
|
22
|
+
`additionalProperties: true` keeps harness-specific extensions non-breaking.
|
|
23
|
+
Enforced by `tests/validate-agent-frontmatter-schema.py`
|
|
24
|
+
(`validate:agent-schema`).
|
|
25
|
+
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/Raishin/vanguard-frontier-agentic/schemas/agent.frontmatter.schema.json",
|
|
4
|
+
"title": "AGENT.md Frontmatter",
|
|
5
|
+
"description": "JSON Schema for the YAML frontmatter block in every AGENT.md file. Required fields are derived empirically from the existing corpus (141 files), which uniformly carries only a metadata block. additionalProperties is true so future harness-specific fields (e.g., name, description, allowed-tools, model, color) can be added without breaking existing files. Authoritative agent identity, provider, harness, and security metadata live in the adjacent metadata.json (see schemas/agent.schema.json).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"metadata"
|
|
9
|
+
],
|
|
10
|
+
"properties": {
|
|
11
|
+
"metadata": {
|
|
12
|
+
"type": "object",
|
|
13
|
+
"description": "Authorship and versioning block. Mirrors the metadata block in SKILL.md frontmatter.",
|
|
14
|
+
"required": [
|
|
15
|
+
"author",
|
|
16
|
+
"version"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"author": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Author identifier (e.g. 'github: handle').",
|
|
22
|
+
"minLength": 1
|
|
23
|
+
},
|
|
24
|
+
"version": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "Semantic version of the AGENT.md asset.",
|
|
27
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[\\w.-]+)?$"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"additionalProperties": true
|
|
31
|
+
},
|
|
32
|
+
"name": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"description": "Optional kebab-case identifier. Reserved for future harness-specific use; canonical id lives in metadata.json.",
|
|
35
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$"
|
|
36
|
+
},
|
|
37
|
+
"description": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "Optional human-readable purpose statement.",
|
|
40
|
+
"minLength": 20,
|
|
41
|
+
"maxLength": 4000
|
|
42
|
+
},
|
|
43
|
+
"model": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "Optional model preference hint (e.g. 'sonnet', 'opus').",
|
|
46
|
+
"minLength": 1
|
|
47
|
+
},
|
|
48
|
+
"allowed-tools": {
|
|
49
|
+
"description": "Optional pre-approval list of tools. Space-separated string or YAML sequence.",
|
|
50
|
+
"oneOf": [
|
|
51
|
+
{
|
|
52
|
+
"type": "string",
|
|
53
|
+
"minLength": 1
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "array",
|
|
57
|
+
"minItems": 1,
|
|
58
|
+
"items": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"minLength": 1
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"tools": {
|
|
66
|
+
"description": "Optional alias/alternative for allowed-tools used by some harnesses.",
|
|
67
|
+
"oneOf": [
|
|
68
|
+
{
|
|
69
|
+
"type": "string",
|
|
70
|
+
"minLength": 1
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "array",
|
|
74
|
+
"minItems": 1,
|
|
75
|
+
"items": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"minLength": 1
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"color": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "Optional UI color hint used by some harnesses.",
|
|
85
|
+
"minLength": 1
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"additionalProperties": true
|
|
89
|
+
}
|
|
@@ -90,6 +90,14 @@
|
|
|
90
90
|
"path": {
|
|
91
91
|
"type": "string",
|
|
92
92
|
"minLength": 1
|
|
93
|
+
},
|
|
94
|
+
"companion_skills": {
|
|
95
|
+
"type": "array",
|
|
96
|
+
"description": "Explicit list of skill ids that pair with this agent. Overrides name-stripping convention. Set to [] to declare intentional no-pair.",
|
|
97
|
+
"items": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$"
|
|
100
|
+
}
|
|
93
101
|
}
|
|
94
102
|
},
|
|
95
103
|
"additionalProperties": true
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/Raishin/vanguard-frontier-agentic/schemas/skill.frontmatter.schema.json",
|
|
4
|
+
"title": "SKILL.md Frontmatter",
|
|
5
|
+
"description": "JSON Schema for the YAML frontmatter block in every SKILL.md file.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"name",
|
|
9
|
+
"description",
|
|
10
|
+
"allowed-tools",
|
|
11
|
+
"metadata"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"name": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Kebab-case identifier for the skill. Must start with a lowercase letter or digit.",
|
|
17
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$"
|
|
18
|
+
},
|
|
19
|
+
"description": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Human-readable purpose statement. 50–1500 characters.",
|
|
22
|
+
"minLength": 50,
|
|
23
|
+
"maxLength": 1500
|
|
24
|
+
},
|
|
25
|
+
"allowed-tools": {
|
|
26
|
+
"description": "Explicit pre-approval list of tools this skill may invoke. May be a space-separated string or a YAML sequence of strings.",
|
|
27
|
+
"oneOf": [
|
|
28
|
+
{
|
|
29
|
+
"type": "string",
|
|
30
|
+
"minLength": 1
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"type": "array",
|
|
34
|
+
"minItems": 1,
|
|
35
|
+
"items": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"minLength": 1
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"metadata": {
|
|
43
|
+
"type": "object",
|
|
44
|
+
"description": "Authorship and versioning block.",
|
|
45
|
+
"required": [
|
|
46
|
+
"author",
|
|
47
|
+
"version"
|
|
48
|
+
],
|
|
49
|
+
"properties": {
|
|
50
|
+
"author": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"description": "Author identifier (e.g. 'github: handle').",
|
|
53
|
+
"minLength": 1
|
|
54
|
+
},
|
|
55
|
+
"version": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "Semantic version of the skill.",
|
|
58
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+(-[\\w.-]+)?$"
|
|
59
|
+
},
|
|
60
|
+
"updated": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"description": "ISO 8601 date (YYYY-MM-DD) of the last meaningful change to the skill. Optional but validated when present.",
|
|
63
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
64
|
+
},
|
|
65
|
+
"category": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "Coarse marketplace taxonomy bucket. See docs/taxonomy.md for definitions.",
|
|
68
|
+
"enum": [
|
|
69
|
+
"security",
|
|
70
|
+
"platform",
|
|
71
|
+
"data",
|
|
72
|
+
"finops",
|
|
73
|
+
"ai",
|
|
74
|
+
"delivery",
|
|
75
|
+
"observability",
|
|
76
|
+
"compliance",
|
|
77
|
+
"resilience",
|
|
78
|
+
"networking"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"lifecycle": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"description": "Stability stage. Optional; defaults to 'stable' when absent.",
|
|
84
|
+
"enum": ["experimental", "beta", "stable", "deprecated"]
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
"additionalProperties": true
|
|
88
|
+
},
|
|
89
|
+
"disable-model-invocation": {
|
|
90
|
+
"type": "boolean",
|
|
91
|
+
"description": "Optional. When true, the skill suppresses direct model invocation and relies entirely on tool calls."
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"additionalProperties": true
|
|
95
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Apply least-privilege `allowed-tools` to every SKILL.md frontmatter.
|
|
3
|
+
|
|
4
|
+
Taxonomy (matched against skill id, first match wins):
|
|
5
|
+
maestro -> Agent Skill Read Grep Glob
|
|
6
|
+
*-patch-executor,
|
|
7
|
+
*-fix-operator,
|
|
8
|
+
*-corrector,
|
|
9
|
+
*-deployment-hotfix-*,
|
|
10
|
+
*-remediation-operator,
|
|
11
|
+
*-rollout-corrector,
|
|
12
|
+
*-pipeline-fix-operator -> Read Edit Write MultiEdit Grep Glob
|
|
13
|
+
*-developer,
|
|
14
|
+
*-agentcore,
|
|
15
|
+
aws-generative-ai-developer,
|
|
16
|
+
*-application-developer -> Read Edit Write MultiEdit Grep Glob Bash
|
|
17
|
+
*-live-*-guard,
|
|
18
|
+
velero-backup-restore-guard
|
|
19
|
+
-> Read Grep Glob WebFetch
|
|
20
|
+
*-investigator,
|
|
21
|
+
*-responder,
|
|
22
|
+
*-advisor,
|
|
23
|
+
*-coordinator,
|
|
24
|
+
*-watch-coordinator,
|
|
25
|
+
*-analyst,
|
|
26
|
+
*-planner,
|
|
27
|
+
finops-cloud-price-advisor
|
|
28
|
+
-> Read Grep Glob WebFetch
|
|
29
|
+
default (review/governor/
|
|
30
|
+
auditor/mapper/architect/
|
|
31
|
+
reviewer/steward/selector
|
|
32
|
+
/skill-designer) -> Read Grep Glob
|
|
33
|
+
|
|
34
|
+
Skip if `allowed-tools` is already declared (idempotent).
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
from __future__ import annotations
|
|
38
|
+
|
|
39
|
+
import sys
|
|
40
|
+
from pathlib import Path
|
|
41
|
+
|
|
42
|
+
ROOT = Path(__file__).resolve().parents[1]
|
|
43
|
+
SKILLS_DIR = ROOT / "skills"
|
|
44
|
+
|
|
45
|
+
PATCHERS = (
|
|
46
|
+
"-patch-executor", "-fix-operator", "-corrector",
|
|
47
|
+
"-deployment-hotfix-operator", "-remediation-operator",
|
|
48
|
+
"-rollout-corrector", "-pipeline-fix-operator",
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
DEVELOPERS = (
|
|
52
|
+
"-developer", "-application-developer",
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
LIVE_GUARDS = ("-live-",)
|
|
56
|
+
|
|
57
|
+
INVESTIGATORS = (
|
|
58
|
+
"-investigator", "-responder", "-advisor", "-coordinator",
|
|
59
|
+
"-analyst", "-planner",
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def classify(skill_id: str) -> str:
|
|
64
|
+
if skill_id.endswith("-maestro") or skill_id == "kubernetes-maestro" or skill_id == "terraform-maestro":
|
|
65
|
+
return "Agent Skill Read Grep Glob"
|
|
66
|
+
for s in PATCHERS:
|
|
67
|
+
if skill_id.endswith(s):
|
|
68
|
+
return "Read Edit Write MultiEdit Grep Glob"
|
|
69
|
+
if skill_id == "aws-agentcore" or skill_id == "aws-generative-ai-developer":
|
|
70
|
+
return "Read Edit Write MultiEdit Grep Glob Bash"
|
|
71
|
+
for s in DEVELOPERS:
|
|
72
|
+
if skill_id.endswith(s):
|
|
73
|
+
return "Read Edit Write MultiEdit Grep Glob Bash"
|
|
74
|
+
for s in LIVE_GUARDS:
|
|
75
|
+
if s in skill_id and skill_id.endswith("-guard"):
|
|
76
|
+
return "Read Grep Glob WebFetch"
|
|
77
|
+
if skill_id == "velero-backup-restore-guard":
|
|
78
|
+
return "Read Grep Glob WebFetch"
|
|
79
|
+
for s in INVESTIGATORS:
|
|
80
|
+
if skill_id.endswith(s):
|
|
81
|
+
return "Read Grep Glob WebFetch"
|
|
82
|
+
if skill_id == "finops-cloud-price-advisor":
|
|
83
|
+
return "Read Grep Glob WebFetch"
|
|
84
|
+
return "Read Grep Glob"
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def apply(skill_md: Path) -> tuple[bool, str]:
|
|
88
|
+
text = skill_md.read_text(encoding="utf-8")
|
|
89
|
+
if not text.startswith("---\n"):
|
|
90
|
+
return False, "no frontmatter"
|
|
91
|
+
|
|
92
|
+
end = text.find("\n---", 4)
|
|
93
|
+
if end == -1:
|
|
94
|
+
return False, "unterminated frontmatter"
|
|
95
|
+
|
|
96
|
+
fm_block = text[4:end]
|
|
97
|
+
if "\nallowed-tools:" in "\n" + fm_block:
|
|
98
|
+
return False, "already has allowed-tools"
|
|
99
|
+
|
|
100
|
+
skill_id = skill_md.parent.name
|
|
101
|
+
tools = classify(skill_id)
|
|
102
|
+
|
|
103
|
+
# Insert allowed-tools immediately after the description block,
|
|
104
|
+
# before the metadata: block (if any) or before the closing ---.
|
|
105
|
+
lines = fm_block.split("\n")
|
|
106
|
+
insert_at = None
|
|
107
|
+
for i, line in enumerate(lines):
|
|
108
|
+
if line.startswith("metadata:"):
|
|
109
|
+
insert_at = i
|
|
110
|
+
break
|
|
111
|
+
if insert_at is None:
|
|
112
|
+
insert_at = len(lines)
|
|
113
|
+
|
|
114
|
+
lines.insert(insert_at, f"allowed-tools: {tools}")
|
|
115
|
+
new_fm = "\n".join(lines)
|
|
116
|
+
new_text = "---\n" + new_fm + text[end:]
|
|
117
|
+
skill_md.write_text(new_text, encoding="utf-8")
|
|
118
|
+
return True, tools
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def main() -> int:
|
|
122
|
+
files = sorted(SKILLS_DIR.glob("*/*/SKILL.md"))
|
|
123
|
+
summary: dict[str, int] = {}
|
|
124
|
+
skipped = 0
|
|
125
|
+
for f in files:
|
|
126
|
+
ok, info = apply(f)
|
|
127
|
+
if ok:
|
|
128
|
+
summary[info] = summary.get(info, 0) + 1
|
|
129
|
+
else:
|
|
130
|
+
skipped += 1
|
|
131
|
+
if info != "already has allowed-tools":
|
|
132
|
+
print(f"WARN: {f.relative_to(ROOT)}: {info}", file=sys.stderr)
|
|
133
|
+
|
|
134
|
+
total = sum(summary.values())
|
|
135
|
+
print(f"Applied allowed-tools to {total} skills (skipped {skipped})")
|
|
136
|
+
for tools, count in sorted(summary.items(), key=lambda x: -x[1]):
|
|
137
|
+
print(f" {count:3d} {tools}")
|
|
138
|
+
return 0
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
if __name__ == "__main__":
|
|
142
|
+
sys.exit(main())
|