@raishin/vanguard-frontier-agentic 2.5.0 → 2.6.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.
Files changed (37) hide show
  1. package/.agents/tasks/task-dynamic-kiro-powers/2025-01-24-120000-review.md +92 -0
  2. package/.agents/tasks/task-dynamic-kiro-powers/context.json +22 -0
  3. package/.agents/tasks/task-dynamic-kiro-powers/features/FEAT-001.json +34 -0
  4. package/.agents/tasks/task-dynamic-kiro-powers/task.json +14 -0
  5. package/.claude-plugin/marketplace.json +1 -1
  6. package/.claude-plugin/plugin.json +1 -1
  7. package/.cursor-plugin/plugin.json +1 -1
  8. package/.github/plugin/marketplace.json +1 -1
  9. package/README.md +2 -0
  10. package/catalog/asset-integrity.json +129 -29
  11. package/package.json +3 -1
  12. package/plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json +3 -2
  13. package/plugins/vanguard-frontier-agentic/skills/vanguard-frontier-agentic-install/SKILL.md +37 -0
  14. package/powers/README.md +28 -10
  15. package/powers/vanguard-argocd/POWER.md +40 -0
  16. package/powers/vanguard-backstage/POWER.md +40 -0
  17. package/powers/vanguard-cert-manager/POWER.md +40 -0
  18. package/powers/vanguard-cilium/POWER.md +40 -0
  19. package/powers/vanguard-dotnet/POWER.md +41 -0
  20. package/powers/vanguard-falco/POWER.md +40 -0
  21. package/powers/vanguard-fluxcd/POWER.md +40 -0
  22. package/powers/vanguard-generic/POWER.md +40 -0
  23. package/powers/vanguard-hr/POWER.md +41 -0
  24. package/powers/vanguard-istio/POWER.md +40 -0
  25. package/powers/vanguard-kyverno/POWER.md +40 -0
  26. package/powers/vanguard-legal/POWER.md +41 -0
  27. package/powers/vanguard-marketing/POWER.md +41 -0
  28. package/powers/vanguard-multi-cloud/POWER.md +41 -0
  29. package/powers/vanguard-opentelemetry/POWER.md +40 -0
  30. package/powers/vanguard-prometheus/POWER.md +40 -0
  31. package/powers/vanguard-sigstore/POWER.md +40 -0
  32. package/scripts/export-marketplace-agents.mjs +26 -0
  33. package/scripts/generate-kiro-powers.mjs +360 -5
  34. package/scripts/install-codex-home.mjs +95 -0
  35. package/tests/test-codex-plugin-marketplace-install.test.mjs +132 -0
  36. package/tests/test-vfa-export-coverage.test.mjs +108 -0
  37. package/tests/validate-codex-marketplace.py +23 -1
@@ -0,0 +1,92 @@
1
+ # Dynamic Kiro Powers generator
2
+
3
+ The generator was previously hardcoded to 15 providers. This change makes it scan `catalog/agents.json` at generate-time, discovering all 32 providers with a `kiro` harness, and auto-deriving steering content (displayName, description, keywords, invariants) for the 17 providers that lack hand-authored entries. A merged map of hand-authored + derived entries drives the iteration loop, and a new `renderReadme()` produces an alphabetically-sorted README reflecting the full set.
4
+
5
+ Watch for: mid-word truncation in 10 of 17 derived descriptions produces broken text visible in frontmatter (confirmed); grammar error "All 1 agents" for single-agent providers (confirmed); template renders maestro-routing guidance even for maestro-less providers, creating contradictory body text (confirmed, but pre-existing pattern extended to new providers).
6
+
7
+ ## High-level view
8
+
9
+ The description-generation logic for single-agent providers has a truncation path that cuts at 120 characters without respecting word boundaries, producing mid-word breaks like `secre...` and `t...` that appear literally in the POWER.md frontmatter `description` field. Ten of the seventeen derived providers hit this path. The descriptions pass the 3-sentence validator (the `...` doesn't count as a sentence terminator) but the output is visually broken and semantically incomplete.
10
+
11
+ The template-rendering path (`renderPower`) emits maestro guidance ("Use the maestro as the entry point...") unconditionally, even when the bullet above says "no maestro for this provider." This PR did not introduce the pattern but propagates it to 11 additional maestro-less providers, making the contradiction more visible and more likely to confuse Kiro's AI routing.
12
+
13
+ The `adapterNote` string has no singular branch — when a provider has exactly 1 agent, the output reads "All 1 agents in this provider ship a Kiro adapter" across 10 new providers.
14
+
15
+ <details>
16
+ <summary>Issues (3)</summary>
17
+
18
+ 1. **Mid-word description truncation** — `core.substring(0, 117) + "..."` cuts at byte offset regardless of word boundary. Truncate to the last space before 120 chars, or trim the catalog summary at a comma/list-item boundary so the description remains a coherent sentence fragment. Affects 10 of 17 new providers.
19
+ 2. **"All 1 agents" grammar** — The `adapterNote` template uses `All ${total} agents` without a singular branch. When `total === 1`, this should read "The single agent in this provider ships..." or equivalent. Affects 10 providers.
20
+ 3. **Maestro boilerplate on maestro-less providers** — The "Use the maestro as the entry point" paragraph is rendered even when the provider has no maestro. Conditionally omit or rewrite this paragraph when `maestro` is null.
21
+
22
+ </details>
23
+
24
+ <details>
25
+ <summary>Details</summary>
26
+
27
+ ## Description truncation at 120 chars
28
+
29
+ The derivation path for single-agent providers strips the catalog summary's "Agent for X." prefix, removes a leading "Review"/"Static review of" prefix, then truncates at 120 characters:
30
+
31
+ ```javascript
32
+ if (core.length > 120) {
33
+ core = core.substring(0, 117) + "...";
34
+ }
35
+ ```
36
+
37
+ This hard cut lands mid-word. For backstage the result is `"secre..."` (cutting "secret scope"), for cert-manager `"t..."` (cutting "trust"), for cilium `"policy ..."`. The frontmatter `description` field is the primary metadata Kiro's Powers panel shows to users. A word-boundary-aware truncation (find last space before offset 117, trim there, append `"..."`) would keep descriptions readable.
38
+
39
+ Only single-agent providers with long catalog summaries are affected — the multi-agent paths use `deriveTopics` which slices to 4 items and stays short.
40
+
41
+ ## Singular/plural grammar in adapter note
42
+
43
+ `renderPower` assembles: `"All ${total} agents in this provider ship a Kiro adapter..."`. When `total === 1`, this produces "All 1 agents in this provider ship." The template distinguishes `kiroAvailable === total` vs `kiroAvailable === 0` vs partial, but never checks for the singular case. Adding a `total === 1` guard (e.g., "The single agent in this provider ships a Kiro adapter...") fixes ten affected providers.
44
+
45
+ ## Contradictory maestro guidance for non-maestro providers
46
+
47
+ The body template always emits:
48
+
49
+ ```
50
+ Use the maestro as the entry point: classify the task, then dispatch to
51
+ one specialist or a parallel team of specialists.
52
+ ```
53
+
54
+ This appears directly beneath "*(no maestro for this provider; reference agents directly under `agents/<provider>/`)*". After this PR, 11 providers render this contradictory pair (up from 2 in the base). Since Kiro's AI uses this steering text for routing decisions, the contradiction could cause it to search for a non-existent maestro agent. Conditionalizing the paragraph on `maestro !== null` eliminates the issue.
55
+
56
+ ## Coverage gap: no truncation quality check
57
+
58
+ The Python validator checks structural constraints (3-sentence max, kebab-case, banned keywords) but has no assertion on description coherence. Mid-word truncation passes all existing checks. A simple regex check for `\w{2}\.\.\. ` (word fragment followed by ellipsis mid-sentence) would catch this class of defect.
59
+
60
+ </details>
61
+
62
+ <details>
63
+ <summary>File map</summary>
64
+
65
+ | File | Change |
66
+ |------|--------|
67
+ | `scripts/generate-kiro-powers.mjs` | +342 lines: `discoverKiroProviders`, `deriveProviderConfig`, `DISPLAY_NAME_OVERRIDES`, `DERIVED_KEYWORDS`, `buildMergedProviders`, `renderReadme`; loop changed from `PROVIDERS` to `allProviders` |
68
+ | `powers/README.md` | Now generated (count 14 -> 32, tree alphabetized, "How to update" references dynamic count) |
69
+ | `powers/vanguard-argocd/POWER.md` | New derived power |
70
+ | `powers/vanguard-backstage/POWER.md` | New derived power |
71
+ | `powers/vanguard-cert-manager/POWER.md` | New derived power |
72
+ | `powers/vanguard-cilium/POWER.md` | New derived power |
73
+ | `powers/vanguard-dotnet/POWER.md` | New derived power (has maestro) |
74
+ | `powers/vanguard-falco/POWER.md` | New derived power |
75
+ | `powers/vanguard-fluxcd/POWER.md` | New derived power |
76
+ | `powers/vanguard-generic/POWER.md` | New derived power |
77
+ | `powers/vanguard-hr/POWER.md` | New derived power (has maestro) |
78
+ | `powers/vanguard-istio/POWER.md` | New derived power |
79
+ | `powers/vanguard-kyverno/POWER.md` | New derived power |
80
+ | `powers/vanguard-legal/POWER.md` | New derived power (has maestro) |
81
+ | `powers/vanguard-marketing/POWER.md` | New derived power (has maestro) |
82
+ | `powers/vanguard-multi-cloud/POWER.md` | New derived power (has maestro) |
83
+ | `powers/vanguard-opentelemetry/POWER.md` | New derived power |
84
+ | `powers/vanguard-prometheus/POWER.md` | New derived power |
85
+ | `powers/vanguard-sigstore/POWER.md` | New derived power |
86
+ | `.agents/tasks/task-dynamic-kiro-powers/context.json` | Task context metadata |
87
+ | `.agents/tasks/task-dynamic-kiro-powers/features/FEAT-001.json` | Feature spec |
88
+ | `.agents/tasks/task-dynamic-kiro-powers/task.json` | Task tracker |
89
+
90
+ Full diff: `git diff 8e0a7fc..HEAD`
91
+
92
+ </details>
@@ -0,0 +1,22 @@
1
+ {
2
+ "project_type": "Multi-platform agent marketplace (Node.js scripts, Python validators)",
3
+ "language": "JavaScript (ESM) for generator, Python for validator",
4
+ "build_system": "npm scripts - no compile step, just generator + validators",
5
+ "test_framework": "Python validator scripts (tests/validate-kiro-powers.py) plus generator --check mode",
6
+ "build_command": "NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs",
7
+ "test_command": "NODE_OPTIONS=\"\" python3 tests/validate-kiro-powers.py",
8
+ "verification_instructions": "1. Run NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs to generate powers. 2. Run NODE_OPTIONS=\"\" python3 tests/validate-kiro-powers.py to validate. 3. Run NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs --check to confirm idempotency.",
9
+ "snapshot_or_generated_files": "powers/*/POWER.md and powers/README.md are generated files. Command: node scripts/generate-kiro-powers.mjs",
10
+ "setup_instructions": "No setup needed - Node.js and Python3 are pre-installed",
11
+ "environment_constraints": "Must prefix node commands with NODE_OPTIONS=\"\" due to sandbox preload issue",
12
+ "contribution_requirements": "Generated powers must conform to strict-5 frontmatter (name, displayName, description, keywords, author). Description max 3 sentences. Keywords must be specific, not broad (avoid: cloud, code, devops, infrastructure, infra, agent, agents, ai, ml, ops, automation, tool, tools, general). Names must be kebab-case.",
13
+ "key_patterns": "Generator uses a PROVIDERS object with hand-authored steering (displayName, description, keywords, invariants). renderPower() creates frontmatter + body. summarize() reads catalog for agent counts, maestro, live-guards. renderReadme() generates powers/README.md from PROVIDERS keys. Validator independently checks all powers/ subdirs.",
14
+ "relevant_files": [
15
+ "scripts/generate-kiro-powers.mjs",
16
+ "tests/validate-kiro-powers.py",
17
+ "catalog/agents.json",
18
+ "powers/README.md",
19
+ "powers/vanguard-aws/POWER.md"
20
+ ],
21
+ "directory_structure": "scripts/ has generators, tests/ has validators, catalog/agents.json is the source of truth for all agents, powers/ has generated POWER.md files per provider"
22
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "FEAT-001",
3
+ "type": "fix",
4
+ "description": "Make the Kiro Powers generator fully dynamic so it auto-generates Powers for ALL 32 providers in catalog/agents.json that have 'kiro' in their harnesses array, not just the 15 hardcoded in the PROVIDERS object.",
5
+ "status": "completed",
6
+ "steps": [
7
+ "Step 1: In scripts/generate-kiro-powers.mjs, add a function that reads catalog/agents.json and discovers all unique providers where at least one agent has 'kiro' in its harnesses array. This should happen dynamically at generate-time.",
8
+ "Step 2: Add a function (e.g. `deriveProviderConfig`) that auto-generates steering content for providers NOT already in the hardcoded PROVIDERS object. The logic should be: (a) displayName: title-case the provider name with 'Vanguard Frontier -- ' prefix (use actual double-hyphen-space, e.g. 'Vanguard Frontier -- ArgoCD' becomes 'Vanguard Frontier \\u2014 ArgoCD' using em-dash matching existing convention). For multi-word names like 'multi-cloud' or 'cert-manager', convert to title case: 'Multi-Cloud', 'Cert-Manager'. For abbreviations like 'dotnet' use '.NET', 'hr' use 'HR', 'fluxcd' use 'FluxCD', 'argocd' use 'ArgoCD', 'opentelemetry' use 'OpenTelemetry'. (b) description: Generate from catalog data - max 3 sentences. Pattern: describe what the agents do based on agent IDs/summaries, mention maestro routing if present, note whether it has live-guard agents. Keep under 3 sentences. (c) keywords: Derive from provider name and agent IDs. Must be specific, NOT broad. Avoid the banned list: cloud, code, devops, infrastructure, infra, agent, agents, ai, ml, ops, automation, tool, tools, general. (d) invariants: Generate sensible defaults - if no live-guards, focus on review-only / static-analysis invariants. If has maestro, mention routing through maestro. If has live-guards, include the standard live-guard discipline bullet.",
9
+ "Step 3: Build a merged PROVIDERS-like map that combines the hand-authored PROVIDERS entries (unchanged) with the auto-derived entries for missing providers. The final iteration loop should use this merged map instead of just PROVIDERS.",
10
+ "Step 4: Update the loop at the bottom of the generator that iterates `Object.entries(PROVIDERS)` to instead iterate the merged map (all 32 providers). The renderPower and renderReadme functions should work with this merged map.",
11
+ "Step 5: Make sure the renderReadme function uses the merged map (all 32 providers) so the README.md accurately reflects the full count.",
12
+ "Step 6: The auto-derived descriptions MUST comply with the strict-5 spec: max 3 sentences for description, kebab-case name, specific non-broad keywords. Test each derived entry mentally.",
13
+ "Step 7: Run `NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs` and verify it generates 32 Power directories under powers/.",
14
+ "Step 8: Run `NODE_OPTIONS=\"\" python3 tests/validate-kiro-powers.py` and confirm all 32 Powers pass validation.",
15
+ "Step 9: Run `NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs --check` and confirm it reports all 32 Powers in sync (idempotency check)."
16
+ ],
17
+ "acceptance_criteria": [
18
+ "Running `NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs` produces 32 POWER.md files under powers/ (one per kiro-enabled provider)",
19
+ "Running `NODE_OPTIONS=\"\" python3 tests/validate-kiro-powers.py` passes with OK status for all 32 Powers",
20
+ "Running `NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs --check` exits 0 (all Powers in sync)",
21
+ "The 15 existing hand-authored providers (aws, azure, gcp, oci, alibaba, huawei, ovhcloud, scaleway, hetzner, contabo, ionos, kubernetes, terraform, nvidia, salesforce) retain their exact same steering content unchanged",
22
+ "The 17 new providers (argocd, backstage, cert-manager, cilium, dotnet, falco, fluxcd, generic, hr, istio, kyverno, legal, marketing, multi-cloud, opentelemetry, prometheus, sigstore) each get auto-generated Powers with valid strict-5 frontmatter",
23
+ "No generated keyword is in the broad-keywords banned list",
24
+ "No generated description exceeds 3 sentences",
25
+ "All generated names are lowercase kebab-case matching pattern 'vanguard-<provider>'"
26
+ ],
27
+ "verification": [
28
+ "NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs",
29
+ "NODE_OPTIONS=\"\" python3 tests/validate-kiro-powers.py",
30
+ "NODE_OPTIONS=\"\" node scripts/generate-kiro-powers.mjs --check"
31
+ ],
32
+ "blocked_reason": null,
33
+ "findings": "All 32 providers generate successfully. The generator outputs '33 Kiro Powers (+ README.md)' because it counts 32 POWER.md files + 1 README.md in the written array. The validator correctly reports 32 Powers. Single-agent providers use their catalog summary (second sentence if first is 'Agent for <id>.') with truncation to 120 chars. All descriptions pass the 3-sentence validator."
34
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "task_id": "task-dynamic-kiro-powers",
3
+ "task_description": "Make the Kiro Powers generator fully dynamic so it auto-generates Powers for ALL providers in catalog/agents.json that have 'kiro' in their harnesses array, not just the 15 hardcoded in the PROVIDERS object. This fixes the bug where 17 providers with Kiro adapters have no Power generated.",
4
+ "status": "completed",
5
+ "feature_order": ["FEAT-001"],
6
+ "blocked_reason": null,
7
+ "verification": {
8
+ "build": "pass",
9
+ "tests": "pass",
10
+ "test_quality": "pass",
11
+ "docker_build": "skipped",
12
+ "summary": "Generator produces 32 Powers (up from 15). Validator confirms all 32 pass strict-5 frontmatter, kebab-case, max-3-sentence, non-broad-keyword checks. Idempotency check (--check) passes. Review fixes applied: word-boundary truncation, singular grammar for single-agent providers, conditional maestro boilerplate."
13
+ }
14
+ }
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Curated marketplace for cloud and zero-trust AI workflows. Skills, agents, rules, MCP references, and compliance-aware architecture across AWS, Azure, OCI, GCP, Alibaba Cloud, Huawei Cloud, Kubernetes, and Terraform.",
9
- "version": "2.5.0"
9
+ "version": "2.6.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vanguard-frontier-agentic",
3
- "version": "2.4.4",
3
+ "version": "2.5.0",
4
4
  "description": "Cloud and zero-trust agentic workflow marketplace for skills, agents, rules, MCP references, and compliance-aware architecture.",
5
5
  "author": {
6
6
  "name": "Raishin",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vanguard-frontier-agentic",
3
- "version": "2.4.4",
3
+ "version": "2.5.0",
4
4
  "description": "Cloud and zero-trust agentic workflow marketplace for skills, agents, rules, MCP references, and compliance-aware architecture.",
5
5
  "author": {
6
6
  "name": "Raishin",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://raw.githubusercontent.com/github/copilot-cli/main/schemas/marketplace.schema.json",
3
3
  "name": "vanguard-frontier-agentic",
4
4
  "description": "Curated marketplace for cloud and zero-trust AI workflows. 331 agents, 286 skills, and rules across AWS, Azure, OCI, GCP, Alibaba Cloud, Huawei Cloud, Kubernetes, and Terraform.",
5
- "version": "2.5.0",
5
+ "version": "2.6.0",
6
6
  "owner": {
7
7
  "name": "Raishin",
8
8
  "url": "https://github.com/Raishin"
package/README.md CHANGED
@@ -15,6 +15,8 @@
15
15
  <a href="https://github.com/Raishin/vanguard-frontier-agentic/actions/workflows/codeql.yml"><img alt="CodeQL" src="https://github.com/Raishin/vanguard-frontier-agentic/actions/workflows/codeql.yml/badge.svg?branch=master" /></a>
16
16
  <a href="https://github.com/Raishin/vanguard-frontier-agentic/actions/workflows/install-paths-smoke.yml"><img alt="Install Paths Smoke" src="https://github.com/Raishin/vanguard-frontier-agentic/actions/workflows/install-paths-smoke.yml/badge.svg?branch=master" /></a>
17
17
  <a href="https://scorecard.dev/viewer/?uri=github.com/Raishin/vanguard-frontier-agentic"><img alt="OpenSSF Scorecard" src="https://api.securityscorecards.dev/projects/github.com/Raishin/vanguard-frontier-agentic/badge" /></a>
18
+ <a href="https://www.bestpractices.dev/projects/12964"><img alt="OpenSSF Best Practices" src="https://www.bestpractices.dev/projects/12964/badge" /></a>
19
+ <a href="https://www.bestpractices.dev/projects/12964"><img alt="OpenSSF Baseline" src="https://www.bestpractices.dev/projects/12964/baseline" /></a>
18
20
  <a href="https://github.com/Raishin/vanguard-frontier-agentic/actions/workflows/docs-quality.yml"><img alt="Docs Quality" src="https://github.com/Raishin/vanguard-frontier-agentic/actions/workflows/docs-quality.yml/badge.svg?branch=master" /></a>
19
21
  <a href="https://docs.npmjs.com/generating-provenance-statements"><img alt="npm provenance" src="https://img.shields.io/badge/npm-provenance-26a566.svg?logo=npm" /></a>
20
22
  <a href="CONTRIBUTING.md"><img alt="PRs welcome" src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" /></a>
@@ -20128,7 +20128,7 @@
20128
20128
  },
20129
20129
  {
20130
20130
  "tree": "scripts",
20131
- "aggregate_sha256": "61d0b8d2fddd8393d936223e26b260c84dbbdecef4da3808c4ab9869fa803335",
20131
+ "aggregate_sha256": "6138f2412ca20a0d1699082ba5aee6b7ba2cfe6c8ff83036e753a6196289d4aa",
20132
20132
  "files": [
20133
20133
  {
20134
20134
  "path": "scripts/apply-skill-allowed-tools.py",
@@ -20142,8 +20142,8 @@
20142
20142
  },
20143
20143
  {
20144
20144
  "path": "scripts/export-marketplace-agents.mjs",
20145
- "sha256": "a6880e1fbd2430b72ed9db38a538995bce94e48b04d2cf5dd55dedcf227b781b",
20146
- "bytes": 26744
20145
+ "sha256": "c79e3e7decbb3b9ba77f33e05145a22892bcfbf6a15231a74191a1d60e47cbac",
20146
+ "bytes": 27654
20147
20147
  },
20148
20148
  {
20149
20149
  "path": "scripts/gen_azure_live_guards.py",
@@ -20167,8 +20167,8 @@
20167
20167
  },
20168
20168
  {
20169
20169
  "path": "scripts/generate-kiro-powers.mjs",
20170
- "sha256": "5bd32b71458dab9741cfa2e9bb3c0df81ea0150dbc38a2e01418022b543872ad",
20171
- "bytes": 20700
20170
+ "sha256": "38c60ad9b98a6fc0d6eb0901594c1fbcb9c6cf4ac7b69f3bb246d81ac816bed6",
20171
+ "bytes": 35147
20172
20172
  },
20173
20173
  {
20174
20174
  "path": "scripts/generate-plugin-manifest.mjs",
@@ -20180,6 +20180,11 @@
20180
20180
  "sha256": "6134b200b037ecaf94d7758d06ad9c35afec05348b4f4fddcafc6bae15e3bb0b",
20181
20181
  "bytes": 5674
20182
20182
  },
20183
+ {
20184
+ "path": "scripts/install-codex-home.mjs",
20185
+ "sha256": "07189e47956afbf0a316112c6f3988558a35a33de22e3d850af6969b7354f01f",
20186
+ "bytes": 3493
20187
+ },
20183
20188
  {
20184
20189
  "path": "scripts/release-prepare.mjs",
20185
20190
  "sha256": "bc1ce887b378273fd93e458a87208011959c5355ff651d9f63757825135bb763",
@@ -20194,18 +20199,23 @@
20194
20199
  },
20195
20200
  {
20196
20201
  "tree": "powers",
20197
- "aggregate_sha256": "7a35f82ab67f5e925c1cc265bc1df5f5863f7ba16f1b9cd4d4f2669a469fdbdc",
20202
+ "aggregate_sha256": "0ed8a6ef5bd9d7cd9ea910cb07b0b72fad0cd8bc9376e11bb0242a158e577a1c",
20198
20203
  "files": [
20199
20204
  {
20200
20205
  "path": "powers/README.md",
20201
- "sha256": "b0a8ff62a1ab2869bedb17a224e061c5e4e43f11a99deef88cabbdbb03d467bc",
20202
- "bytes": 3832
20206
+ "sha256": "5f9d27fab9ced4d1a49eac13483893f05b9232862ae9a860038d1b698c796a49",
20207
+ "bytes": 4491
20203
20208
  },
20204
20209
  {
20205
20210
  "path": "powers/vanguard-alibaba/POWER.md",
20206
20211
  "sha256": "b09a2b37781189ea99507f6c729ee93a3ff848091ea210433c70a27ae67d757d",
20207
20212
  "bytes": 3391
20208
20213
  },
20214
+ {
20215
+ "path": "powers/vanguard-argocd/POWER.md",
20216
+ "sha256": "eed0a27bca26f305cc3d5f322baf58d8eb70a7546542273160d73a8cb4119862",
20217
+ "bytes": 2193
20218
+ },
20209
20219
  {
20210
20220
  "path": "powers/vanguard-aws/POWER.md",
20211
20221
  "sha256": "305cc05b3ab469f719a28c20816f6590e26ef09965dac3457e0bcd25f1817895",
@@ -20216,21 +20226,61 @@
20216
20226
  "sha256": "da345fff3860f7e4f3e12031f94da912eb8120e15eede8880447609dc09f56a9",
20217
20227
  "bytes": 3310
20218
20228
  },
20229
+ {
20230
+ "path": "powers/vanguard-backstage/POWER.md",
20231
+ "sha256": "e40b729c9b863f0b4519dad598f373316adb63bf84bf23605c8387144b74a08f",
20232
+ "bytes": 2224
20233
+ },
20234
+ {
20235
+ "path": "powers/vanguard-cert-manager/POWER.md",
20236
+ "sha256": "69e93d7b111357cae3f41e5e614081268778a8086db80b084ac724dad9cc7230",
20237
+ "bytes": 2238
20238
+ },
20239
+ {
20240
+ "path": "powers/vanguard-cilium/POWER.md",
20241
+ "sha256": "98e198624678b311847ba15534f59465c14b7b301a8958c8537e47241c3c3687",
20242
+ "bytes": 2204
20243
+ },
20219
20244
  {
20220
20245
  "path": "powers/vanguard-contabo/POWER.md",
20221
20246
  "sha256": "bd66d54f12dac3b3ed7567056027ef0e4f9bb8e6704960d54e60b77b4b7d8bb5",
20222
20247
  "bytes": 2791
20223
20248
  },
20249
+ {
20250
+ "path": "powers/vanguard-dotnet/POWER.md",
20251
+ "sha256": "27fe59a46c68c254ecaba9b9dd65c819867a08cf5f66947fbb31b98c7e6fccf0",
20252
+ "bytes": 2469
20253
+ },
20254
+ {
20255
+ "path": "powers/vanguard-falco/POWER.md",
20256
+ "sha256": "39bc91075468397ec49ef77e8c48ec5a0685c26e748811516387c57a9b681c6b",
20257
+ "bytes": 2184
20258
+ },
20259
+ {
20260
+ "path": "powers/vanguard-fluxcd/POWER.md",
20261
+ "sha256": "853288b0d4a6818a095ab3d7b83de413b84589c57de64573a221d91a70ee67fb",
20262
+ "bytes": 2187
20263
+ },
20224
20264
  {
20225
20265
  "path": "powers/vanguard-gcp/POWER.md",
20226
20266
  "sha256": "e1bfb799b1556ed9d62b0bd80045d85a8ca742a7572d6c836942a23063231a9a",
20227
20267
  "bytes": 3117
20228
20268
  },
20269
+ {
20270
+ "path": "powers/vanguard-generic/POWER.md",
20271
+ "sha256": "8d8e9d028bac2b764e3dd889750a82d7b4e17aa1ba6cbc9e36bdc16982baaccb",
20272
+ "bytes": 2281
20273
+ },
20229
20274
  {
20230
20275
  "path": "powers/vanguard-hetzner/POWER.md",
20231
20276
  "sha256": "f4f0373730597e6ec3cca5b9dd709043a4d57655035873f51c9c21db48d243ef",
20232
20277
  "bytes": 2797
20233
20278
  },
20279
+ {
20280
+ "path": "powers/vanguard-hr/POWER.md",
20281
+ "sha256": "fba79b9ba4c4678ba433a323015482d40645208fa3cad5d4dd691b11cc504c7b",
20282
+ "bytes": 2422
20283
+ },
20234
20284
  {
20235
20285
  "path": "powers/vanguard-huawei/POWER.md",
20236
20286
  "sha256": "5502a64508a9710f33fc35e8e785c12a794e4cd4fdff967032eb9ae7eb6a7382",
@@ -20241,11 +20291,36 @@
20241
20291
  "sha256": "dd63303bbadb05bbadbf71adbd759e2f21d940f38fc6275d3f8fb3804386db3c",
20242
20292
  "bytes": 2659
20243
20293
  },
20294
+ {
20295
+ "path": "powers/vanguard-istio/POWER.md",
20296
+ "sha256": "cd1e64d7ad7b97cf08177fe6e8da47d5087490ff50c08116866da61115674002",
20297
+ "bytes": 2148
20298
+ },
20244
20299
  {
20245
20300
  "path": "powers/vanguard-kubernetes/POWER.md",
20246
20301
  "sha256": "5fb458af0013896e6b95dd7e9b5d7f0f619ad558f983623bd95b94de207d12a0",
20247
20302
  "bytes": 3552
20248
20303
  },
20304
+ {
20305
+ "path": "powers/vanguard-kyverno/POWER.md",
20306
+ "sha256": "33d9fdd860e5293c0037eed1134b514c502dc4a678a81fa6523c34c84d556572",
20307
+ "bytes": 2209
20308
+ },
20309
+ {
20310
+ "path": "powers/vanguard-legal/POWER.md",
20311
+ "sha256": "5c420a3f7a45bdad7b8fbf310a14712839a654a2f32be42d8d37bd51894ff5a5",
20312
+ "bytes": 2462
20313
+ },
20314
+ {
20315
+ "path": "powers/vanguard-marketing/POWER.md",
20316
+ "sha256": "256fd80234b41929c3724af452b69dd1114b5f1ceb5698c6413a7a8de70a1061",
20317
+ "bytes": 2633
20318
+ },
20319
+ {
20320
+ "path": "powers/vanguard-multi-cloud/POWER.md",
20321
+ "sha256": "641c7bfbb6258afe4975be060007ec8c9398fafcc1ad17421c479168089d5c89",
20322
+ "bytes": 2454
20323
+ },
20249
20324
  {
20250
20325
  "path": "powers/vanguard-nvidia/POWER.md",
20251
20326
  "sha256": "2176bcac6966618b55f97fea344729964b3e6d03f7489bda457a057489c52853",
@@ -20256,11 +20331,21 @@
20256
20331
  "sha256": "9fe36c6951d2cab23ffaa64b851cb08d8a0ad1118942db7b850c78a683c536c6",
20257
20332
  "bytes": 3291
20258
20333
  },
20334
+ {
20335
+ "path": "powers/vanguard-opentelemetry/POWER.md",
20336
+ "sha256": "6a4849c8234d8d49111a4b04a94722b7a66dff0e29eb498ae66a96b94b45d10b",
20337
+ "bytes": 2270
20338
+ },
20259
20339
  {
20260
20340
  "path": "powers/vanguard-ovhcloud/POWER.md",
20261
20341
  "sha256": "b2d374c57933a5cd227f868f0c265f11b83476b98ee55ef894c1d05b2ef01f04",
20262
20342
  "bytes": 2611
20263
20343
  },
20344
+ {
20345
+ "path": "powers/vanguard-prometheus/POWER.md",
20346
+ "sha256": "58676f3b9402efdb9ab63ae5976e58b7879aab8fb9c621b018696c02e5420955",
20347
+ "bytes": 2245
20348
+ },
20264
20349
  {
20265
20350
  "path": "powers/vanguard-salesforce/POWER.md",
20266
20351
  "sha256": "7b71640dfa49d9ce213be315da4c72dff1b527b1fafc37c213d34b5cc909ccfb",
@@ -20271,6 +20356,11 @@
20271
20356
  "sha256": "19ef9329b40cd528860651a41e6617b70760df70c7c1cfd3f57aed9446f4068f",
20272
20357
  "bytes": 2651
20273
20358
  },
20359
+ {
20360
+ "path": "powers/vanguard-sigstore/POWER.md",
20361
+ "sha256": "66b7845eab94a6b74f7af0ad09af39e263cbd0dd2f510d1f4992f9d9b01739a5",
20362
+ "bytes": 2230
20363
+ },
20274
20364
  {
20275
20365
  "path": "powers/vanguard-terraform/POWER.md",
20276
20366
  "sha256": "f31175f2b1965b82836de12ce8f52498f828701f2f85709c8e38c7d6ddcc7770",
@@ -20280,7 +20370,7 @@
20280
20370
  },
20281
20371
  {
20282
20372
  "tree": "plugins",
20283
- "aggregate_sha256": "c8cc07cabc5b5e4aa810af98470b6c56d5913a9b26e7e460243d3d373e9f7bba",
20373
+ "aggregate_sha256": "e388389be5636351efcf827ff8f008699318ae8a74be3082f7bff0b940f56b92",
20284
20374
  "files": [
20285
20375
  {
20286
20376
  "path": "plugins/cross-platform-agent-template/.codex-plugin/plugin.json",
@@ -20289,14 +20379,19 @@
20289
20379
  },
20290
20380
  {
20291
20381
  "path": "plugins/vanguard-frontier-agentic/.codex-plugin/plugin.json",
20292
- "sha256": "791816bfc75a13de933e6c97795d3663a6a4b2875294ca8e936a68e9033884c5",
20293
- "bytes": 1850
20382
+ "sha256": "0e91ea8994f768bcfcc559ab61f026cd1a938688d4e1fa36e8ae4614ce187e2c",
20383
+ "bytes": 1875
20384
+ },
20385
+ {
20386
+ "path": "plugins/vanguard-frontier-agentic/skills/vanguard-frontier-agentic-install/SKILL.md",
20387
+ "sha256": "e6f6380390a42e4a00b6d07f0d416bfcb6436a5fb8b377d2b7e583963f81216a",
20388
+ "bytes": 1482
20294
20389
  }
20295
20390
  ]
20296
20391
  },
20297
20392
  {
20298
20393
  "tree": ".claude-plugin",
20299
- "aggregate_sha256": "c6c0585b941f064516306511a3c4ae53fb23a329f69828331d43c26da969d37c",
20394
+ "aggregate_sha256": "2eb63ab7ec008444c6a6d4f0a36ef238f45f15eddcae226f8f6f4bad588cb648",
20300
20395
  "files": [
20301
20396
  {
20302
20397
  "path": ".claude-plugin/README.md",
@@ -20305,19 +20400,19 @@
20305
20400
  },
20306
20401
  {
20307
20402
  "path": ".claude-plugin/marketplace.json",
20308
- "sha256": "e66fbfd20e5524f3b9544d79b5ace2efb09b4569516bee271a586c2939c7aa9d",
20403
+ "sha256": "992db993de65919c948bc9b4afe39fb73f1f5d0fc6c611e137bf1046e5eceffa",
20309
20404
  "bytes": 1008
20310
20405
  },
20311
20406
  {
20312
20407
  "path": ".claude-plugin/plugin.json",
20313
- "sha256": "3bb0b4529f51cb0a41c6fa149dd8b030527792592448ff1615ab63d7d76fb1c5",
20408
+ "sha256": "1eb0f0599050b0b37b1e38727abc4b47e12bd83e476755fd71e4b2a58f8f3a17",
20314
20409
  "bytes": 39327
20315
20410
  }
20316
20411
  ]
20317
20412
  },
20318
20413
  {
20319
20414
  "tree": ".cursor-plugin",
20320
- "aggregate_sha256": "0f2788a978ea2608ccf23e6f0dbf3e3918459a6a6432e8d046af2a3f2ebe5fd1",
20415
+ "aggregate_sha256": "dbcf5a1402d0bf05f45b56392f1aebef6d8cee2469920c82b2e88988560e865a",
20321
20416
  "files": [
20322
20417
  {
20323
20418
  "path": ".cursor-plugin/README.md",
@@ -20326,14 +20421,14 @@
20326
20421
  },
20327
20422
  {
20328
20423
  "path": ".cursor-plugin/plugin.json",
20329
- "sha256": "75dfa6dac3f5e22fed6a39aeb6ce8f1752f8a2631bb2a35d6af091d07091203c",
20424
+ "sha256": "fc5e4b05bc5555507ff7616473d380cbd031d4b598d2de682e6dee22eabc18e4",
20330
20425
  "bytes": 37173
20331
20426
  }
20332
20427
  ]
20333
20428
  },
20334
20429
  {
20335
20430
  "tree": ".github/plugin",
20336
- "aggregate_sha256": "bd2625bee1b9855893616d48209813797a1a09a3dea980375c2685333caa5fe2",
20431
+ "aggregate_sha256": "ee468384c788e19ff6b148bcf9ec18ff181091ea2bac3208ecbf5afbce0116e2",
20337
20432
  "files": [
20338
20433
  {
20339
20434
  "path": ".github/plugin/README.md",
@@ -20342,7 +20437,7 @@
20342
20437
  },
20343
20438
  {
20344
20439
  "path": ".github/plugin/marketplace.json",
20345
- "sha256": "e2f4437d4101e30c0b3130038b1f94af18dde3ee77a3f5e40357a365ce71f5c5",
20440
+ "sha256": "927a0b470a5627e9c61ed494c2b205d78154acde4c7efbae71a58601f6a856ba",
20346
20441
  "bytes": 790
20347
20442
  }
20348
20443
  ]
@@ -20365,7 +20460,7 @@
20365
20460
  },
20366
20461
  {
20367
20462
  "tree": "tests",
20368
- "aggregate_sha256": "96b0a1808d38b9001820c9561f0978d06b9dbf468b39f6b415c4c2780623cc59",
20463
+ "aggregate_sha256": "ca295db4c108d4c6e7fbe183b19bbb980315fe68d0cf41b92480a63d3a2c1d18",
20369
20464
  "files": [
20370
20465
  {
20371
20466
  "path": "tests/AGENTS.md",
@@ -25397,6 +25492,11 @@
25397
25492
  "sha256": "30ae65384ee3d1bea4ff7d753fd4ef79acc4f6d0c5bc1934491b085549d825f7",
25398
25493
  "bytes": 7763
25399
25494
  },
25495
+ {
25496
+ "path": "tests/test-codex-plugin-marketplace-install.test.mjs",
25497
+ "sha256": "158c54d2759b9e28e5e1844f4ff9c03008790ed09a9e0922df3066b04e62cc73",
25498
+ "bytes": 4911
25499
+ },
25400
25500
  {
25401
25501
  "path": "tests/test-copilot-skill-bundling.py",
25402
25502
  "sha256": "d642c65ffc814853007d833b8025d858622a7eb238eaa0c0e80acd843522fefd",
@@ -25414,8 +25514,8 @@
25414
25514
  },
25415
25515
  {
25416
25516
  "path": "tests/test-vfa-export-coverage.test.mjs",
25417
- "sha256": "e9475468429ddfd1194a86716fe937d7645c69ebe334c11dcbb51a1c4c8a0b9c",
25418
- "bytes": 33463
25517
+ "sha256": "5d5de11a7c60d1fbfbf3777cfa692553fb883261ae73f68daa4dd7ce59fa4ee7",
25518
+ "bytes": 39135
25419
25519
  },
25420
25520
  {
25421
25521
  "path": "tests/validate-agent-frontmatter-schema.py",
@@ -25449,8 +25549,8 @@
25449
25549
  },
25450
25550
  {
25451
25551
  "path": "tests/validate-codex-marketplace.py",
25452
- "sha256": "ea5a0a153e4299bfb0ae0a2367c0ff5e6b549cb38c4dbd241ce81782bb16c086",
25453
- "bytes": 5899
25552
+ "sha256": "62a85a3d4ee2d3a0b890f1fe6eac73c9251742bab2672e39a93dd5827ac9f1be",
25553
+ "bytes": 7333
25454
25554
  },
25455
25555
  {
25456
25556
  "path": "tests/validate-finops-price-fixtures.py",
@@ -25523,12 +25623,12 @@
25523
25623
  "root_files": [
25524
25624
  {
25525
25625
  "path": "README.md",
25526
- "sha256": "0e04fe0bf500fd7dd3cb79ee62840232a5e63708f0bc6479b59e9f52d0d8f454",
25527
- "bytes": 78319
25626
+ "sha256": "921ce5b110a89730f5502efcb93393fd17b41068f7c21a007c91363c92fb178a",
25627
+ "bytes": 78630
25528
25628
  },
25529
25629
  {
25530
25630
  "path": "SECURITY.md",
25531
- "sha256": "36f9875216fa8c375fafca01a2f1d49c0f806fc84608ae02d8a0b7954bb8db8a",
25631
+ "sha256": "6f1d5963e733270d0bc2945bc43bda00b794242a8ab65249b966fc0b08a6e322",
25532
25632
  "bytes": 7073
25533
25633
  },
25534
25634
  {
@@ -25563,8 +25663,8 @@
25563
25663
  },
25564
25664
  {
25565
25665
  "path": "package.json",
25566
- "sha256": "ef0ff18dfec9cd529337902aa662633d427797e9d0e47d8fab39935b072b02cd",
25567
- "bytes": 5551
25666
+ "sha256": "32383f9e37207b310bf8f37c7222e47edce759788d0b2f0fae3f78250c0cf717",
25667
+ "bytes": 5722
25568
25668
  },
25569
25669
  {
25570
25670
  "path": ".releaserc.js",
@@ -25572,5 +25672,5 @@
25572
25672
  "bytes": 4523
25573
25673
  }
25574
25674
  ],
25575
- "aggregate_sha256": "d28665ecb6f7c7a64b2be030bc7e61effe320ac624d4fd498b7c38045a2ae485"
25675
+ "aggregate_sha256": "57576c874d562d0a4b43ec9644e502474e3ed9ee59293bd7fa10e347ec870f96"
25576
25676
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raishin/vanguard-frontier-agentic",
3
- "version": "2.5.0",
3
+ "version": "2.6.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
6
  "repository": {
@@ -37,6 +37,7 @@
37
37
  ],
38
38
  "scripts": {
39
39
  "agents:export": "node scripts/export-marketplace-agents.mjs",
40
+ "install:codex-home": "node scripts/install-codex-home.mjs",
40
41
  "manifest:write": "python3 tests/validate-skill-manifest.py --write",
41
42
  "manifest:check": "python3 tests/validate-skill-manifest.py",
42
43
  "validate:aws": "python3 tests/validate-aws-skill-quality.py && python3 tests/validate-aws-progressive-disclosure.py",
@@ -55,6 +56,7 @@
55
56
  "validate:kiro-powers": "python3 tests/validate-kiro-powers.py",
56
57
  "validate:multi-harness-marketplace": "python3 tests/validate-multi-harness-marketplace.py",
57
58
  "validate:codex-marketplace": "python3 tests/validate-codex-marketplace.py",
59
+ "test:codex-plugin-marketplace-install": "node tests/test-codex-plugin-marketplace-install.test.mjs",
58
60
  "validate:finops-fixtures": "python3 tests/validate-finops-price-fixtures.py",
59
61
  "validate:readme-counts": "node tests/validate-readme-counts.mjs",
60
62
  "validate:qa-cluster": "node tests/eval-qa-cluster.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vanguard-frontier-agentic",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Curated marketplace for cloud and zero-trust AI workflows. 331 agents, 286 skills, and rules across AWS, Azure, OCI, GCP, Alibaba Cloud, Huawei Cloud, Kubernetes, and Terraform.",
5
5
  "author": {
6
6
  "name": "Raishin",
@@ -42,5 +42,6 @@
42
42
  "Route this Alibaba Cloud task through the maestro pattern."
43
43
  ],
44
44
  "brandColor": "#3B82F6"
45
- }
45
+ },
46
+ "skills": "./skills/"
46
47
  }