artifact-chain-assistant 0.8.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/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +20 -0
- package/.claude-plugin/plugin.json +11 -0
- package/.codex-plugin/plugin.json +27 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +26 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +19 -0
- package/.github/pull_request_template.md +14 -0
- package/.github/workflows/ci.yml +23 -0
- package/CHANGELOG.md +196 -0
- package/CODE_OF_CONDUCT.md +11 -0
- package/CONTRIBUTING.md +24 -0
- package/EXTENDED-ARTIFACT-CATALOG.md +312 -0
- package/EXTENDED-ARTIFACT-CATALOG.zh-CN.md +289 -0
- package/INSTALL.md +1340 -0
- package/LICENSE +186 -0
- package/NOTICE +18 -0
- package/README.md +426 -0
- package/README.zh-CN.md +409 -0
- package/SECURITY.md +19 -0
- package/adapters/claude/.claude-plugin/plugin.json +11 -0
- package/adapters/claude/EXTENDED-ARTIFACT-CATALOG.md +312 -0
- package/adapters/claude/EXTENDED-ARTIFACT-CATALOG.zh-CN.md +289 -0
- package/adapters/claude/INSTALL.md +1340 -0
- package/adapters/claude/agent-methods/catalog.yaml +260 -0
- package/adapters/claude/bin/version-lock-audit.sh +21 -0
- package/adapters/claude/bin/version-lock-refresh.sh +21 -0
- package/adapters/claude/commands/version-lock-audit.md +9 -0
- package/adapters/claude/commands/version-lock-refresh.md +9 -0
- package/adapters/claude/compatibility.json +9 -0
- package/adapters/claude/hooks/hooks.json +16 -0
- package/adapters/claude/hooks/version-lock-stop.mjs +77 -0
- package/adapters/claude/schemas/artifact-workflow-profile.schema.json +72 -0
- package/adapters/claude/scripts/batch-merge.mjs +276 -0
- package/adapters/claude/scripts/batch-split.mjs +184 -0
- package/adapters/claude/scripts/check-workflow-profile.mjs +64 -0
- package/adapters/claude/scripts/doctor.mjs +44 -0
- package/adapters/claude/scripts/lib/artifact-graph-runtime.mjs +189 -0
- package/adapters/claude/scripts/lib/compatibility-policy.mjs +435 -0
- package/adapters/claude/scripts/lib/inline-yaml-parser.mjs +216 -0
- package/adapters/claude/scripts/lib/method-registry-version.mjs +7 -0
- package/adapters/claude/scripts/lib/workflow-profile.mjs +645 -0
- package/adapters/claude/scripts/run-artifact-workflow.mjs +366 -0
- package/adapters/claude/skills/artifact-audit/SKILL.md +80 -0
- package/adapters/claude/skills/artifact-batch/SKILL.md +115 -0
- package/adapters/claude/skills/artifact-chain-bootstrap/SKILL.md +343 -0
- package/adapters/claude/skills/artifact-chain-maintainer/SKILL.md +167 -0
- package/adapters/claude/skills/artifact-generate/SKILL.md +89 -0
- package/adapters/claude/skills/artifact-repair/SKILL.md +124 -0
- package/adapters/claude/skills/artifact-review/SKILL.md +122 -0
- package/adapters/claude/skills/artifact-workflow-worker/SKILL.md +90 -0
- package/adapters/claude/skills/prd-feature/SKILL.md +68 -0
- package/adapters/claude/skills/prd-feature/author/SKILL.md +92 -0
- package/adapters/claude/skills/prd-feature/references/compose.md +43 -0
- package/adapters/claude/skills/prd-feature/references/inspect.md +94 -0
- package/adapters/claude/skills/prd-feature/references/validate.md +65 -0
- package/adapters/claude/skills/prd-feature/repair/SKILL.md +135 -0
- package/adapters/claude/skills/prd-feature/review/SKILL.md +134 -0
- package/adapters/claude/skills/scenario-script/SKILL.md +76 -0
- package/adapters/claude/skills/scenario-script/author/SKILL.md +111 -0
- package/adapters/claude/skills/scenario-script/references/compose.md +43 -0
- package/adapters/claude/skills/scenario-script/references/inspect.md +105 -0
- package/adapters/claude/skills/scenario-script/references/validate.md +72 -0
- package/adapters/claude/skills/scenario-script/repair/SKILL.md +135 -0
- package/adapters/claude/skills/scenario-script/review/SKILL.md +137 -0
- package/adapters/claude/skills/where-am-i/SKILL.md +233 -0
- package/adapters/claude/templates/README.md +159 -0
- package/adapters/claude/templates/core/decision/review-checklist.md +35 -0
- package/adapters/claude/templates/core/decision/starter.md +66 -0
- package/adapters/claude/templates/core/design/review-checklist.md +41 -0
- package/adapters/claude/templates/core/design/starter.md +84 -0
- package/adapters/claude/templates/core/e2e_test/review-checklist.md +43 -0
- package/adapters/claude/templates/core/e2e_test/starter.md +70 -0
- package/adapters/claude/templates/core/feature/review-checklist.md +29 -0
- package/adapters/claude/templates/core/feature/starter.md +43 -0
- package/adapters/claude/templates/core/scenario/review-checklist.md +29 -0
- package/adapters/claude/templates/core/scenario/starter.md +57 -0
- package/adapters/claude/templates/core/test/review-checklist.md +37 -0
- package/adapters/claude/templates/core/test/starter.md +70 -0
- package/adapters/claude/templates/extended/ADOPTION-GUIDE.md +263 -0
- package/adapters/claude/templates/extended/README.md +261 -0
- package/adapters/claude/templates/extended/agent/agent_skill/review-checklist.md +51 -0
- package/adapters/claude/templates/extended/agent/agent_skill/starter.md +133 -0
- package/adapters/claude/templates/extended/agent/hook_policy/review-checklist.md +58 -0
- package/adapters/claude/templates/extended/agent/hook_policy/starter.md +134 -0
- package/adapters/claude/templates/extended/agent/prompt_packet/review-checklist.md +54 -0
- package/adapters/claude/templates/extended/agent/prompt_packet/starter.md +106 -0
- package/adapters/claude/templates/extended/contracts/api_contract/review-checklist.md +43 -0
- package/adapters/claude/templates/extended/contracts/api_contract/starter.md +92 -0
- package/adapters/claude/templates/extended/contracts/batch_job_contract/review-checklist.md +82 -0
- package/adapters/claude/templates/extended/contracts/batch_job_contract/starter.md +158 -0
- package/adapters/claude/templates/extended/contracts/cli_contract/review-checklist.md +43 -0
- package/adapters/claude/templates/extended/contracts/cli_contract/starter.md +93 -0
- package/adapters/claude/templates/extended/contracts/data_contract/review-checklist.md +45 -0
- package/adapters/claude/templates/extended/contracts/data_contract/starter.md +88 -0
- package/adapters/claude/templates/extended/contracts/integration_contract/review-checklist.md +77 -0
- package/adapters/claude/templates/extended/contracts/integration_contract/starter.md +158 -0
- package/adapters/claude/templates/extended/contracts/ipc_contract/review-checklist.md +78 -0
- package/adapters/claude/templates/extended/contracts/ipc_contract/starter.md +214 -0
- package/adapters/claude/templates/extended/contracts/report_contract/review-checklist.md +61 -0
- package/adapters/claude/templates/extended/contracts/report_contract/starter.md +97 -0
- package/adapters/claude/templates/extended/contracts/ui_contract/review-checklist.md +70 -0
- package/adapters/claude/templates/extended/contracts/ui_contract/starter.md +150 -0
- package/adapters/claude/templates/extended/domain/database_migration/review-checklist.md +51 -0
- package/adapters/claude/templates/extended/domain/database_migration/starter.md +115 -0
- package/adapters/claude/templates/extended/domain/domain_model/review-checklist.md +43 -0
- package/adapters/claude/templates/extended/domain/domain_model/starter.md +83 -0
- package/adapters/claude/templates/extended/governance/oss_compliance/review-checklist.md +51 -0
- package/adapters/claude/templates/extended/governance/oss_compliance/starter.md +84 -0
- package/adapters/claude/templates/extended/governance/publish_skill/review-checklist.md +58 -0
- package/adapters/claude/templates/extended/governance/publish_skill/starter.md +172 -0
- package/adapters/claude/templates/extended/governance/release_policy/review-checklist.md +57 -0
- package/adapters/claude/templates/extended/governance/release_policy/starter.md +131 -0
- package/adapters/claude/templates/extended/ops/deployment_manifest/review-checklist.md +51 -0
- package/adapters/claude/templates/extended/ops/deployment_manifest/starter.md +117 -0
- package/adapters/claude/templates/extended/ops/migration_plan/review-checklist.md +63 -0
- package/adapters/claude/templates/extended/ops/migration_plan/starter.md +117 -0
- package/adapters/claude/templates/extended/ops/performance_budget/review-checklist.md +50 -0
- package/adapters/claude/templates/extended/ops/performance_budget/starter.md +117 -0
- package/adapters/claude/templates/extended/ops/runbook/review-checklist.md +51 -0
- package/adapters/claude/templates/extended/ops/runbook/starter.md +101 -0
- package/adapters/claude/templates/extended/ops/security_review/review-checklist.md +56 -0
- package/adapters/claude/templates/extended/ops/security_review/starter.md +125 -0
- package/adapters/codex/.codex-plugin/plugin.json +27 -0
- package/adapters/codex/EXTENDED-ARTIFACT-CATALOG.md +312 -0
- package/adapters/codex/EXTENDED-ARTIFACT-CATALOG.zh-CN.md +289 -0
- package/adapters/codex/INSTALL.md +1340 -0
- package/adapters/codex/agent-methods/catalog.yaml +260 -0
- package/adapters/codex/compatibility.json +9 -0
- package/adapters/codex/schemas/artifact-workflow-profile.schema.json +72 -0
- package/adapters/codex/scripts/batch-merge.mjs +276 -0
- package/adapters/codex/scripts/batch-split.mjs +184 -0
- package/adapters/codex/scripts/check-workflow-profile.mjs +64 -0
- package/adapters/codex/scripts/doctor.mjs +44 -0
- package/adapters/codex/scripts/lib/artifact-graph-runtime.mjs +189 -0
- package/adapters/codex/scripts/lib/compatibility-policy.mjs +435 -0
- package/adapters/codex/scripts/lib/inline-yaml-parser.mjs +216 -0
- package/adapters/codex/scripts/lib/method-registry-version.mjs +7 -0
- package/adapters/codex/scripts/lib/workflow-profile.mjs +645 -0
- package/adapters/codex/scripts/run-artifact-workflow.mjs +366 -0
- package/adapters/codex/skills/artifact-audit/SKILL.md +80 -0
- package/adapters/codex/skills/artifact-batch/SKILL.md +115 -0
- package/adapters/codex/skills/artifact-chain-bootstrap/SKILL.md +343 -0
- package/adapters/codex/skills/artifact-chain-maintainer/SKILL.md +167 -0
- package/adapters/codex/skills/artifact-generate/SKILL.md +89 -0
- package/adapters/codex/skills/artifact-repair/SKILL.md +124 -0
- package/adapters/codex/skills/artifact-review/SKILL.md +122 -0
- package/adapters/codex/skills/artifact-workflow-worker/SKILL.md +90 -0
- package/adapters/codex/skills/prd-feature/SKILL.md +68 -0
- package/adapters/codex/skills/prd-feature/author/SKILL.md +92 -0
- package/adapters/codex/skills/prd-feature/references/compose.md +43 -0
- package/adapters/codex/skills/prd-feature/references/inspect.md +94 -0
- package/adapters/codex/skills/prd-feature/references/validate.md +65 -0
- package/adapters/codex/skills/prd-feature/repair/SKILL.md +135 -0
- package/adapters/codex/skills/prd-feature/review/SKILL.md +134 -0
- package/adapters/codex/skills/scenario-script/SKILL.md +76 -0
- package/adapters/codex/skills/scenario-script/author/SKILL.md +111 -0
- package/adapters/codex/skills/scenario-script/references/compose.md +43 -0
- package/adapters/codex/skills/scenario-script/references/inspect.md +105 -0
- package/adapters/codex/skills/scenario-script/references/validate.md +72 -0
- package/adapters/codex/skills/scenario-script/repair/SKILL.md +135 -0
- package/adapters/codex/skills/scenario-script/review/SKILL.md +137 -0
- package/adapters/codex/skills/where-am-i/SKILL.md +233 -0
- package/adapters/codex/templates/README.md +159 -0
- package/adapters/codex/templates/core/decision/review-checklist.md +35 -0
- package/adapters/codex/templates/core/decision/starter.md +66 -0
- package/adapters/codex/templates/core/design/review-checklist.md +41 -0
- package/adapters/codex/templates/core/design/starter.md +84 -0
- package/adapters/codex/templates/core/e2e_test/review-checklist.md +43 -0
- package/adapters/codex/templates/core/e2e_test/starter.md +70 -0
- package/adapters/codex/templates/core/feature/review-checklist.md +29 -0
- package/adapters/codex/templates/core/feature/starter.md +43 -0
- package/adapters/codex/templates/core/scenario/review-checklist.md +29 -0
- package/adapters/codex/templates/core/scenario/starter.md +57 -0
- package/adapters/codex/templates/core/test/review-checklist.md +37 -0
- package/adapters/codex/templates/core/test/starter.md +70 -0
- package/adapters/codex/templates/extended/ADOPTION-GUIDE.md +263 -0
- package/adapters/codex/templates/extended/README.md +261 -0
- package/adapters/codex/templates/extended/agent/agent_skill/review-checklist.md +51 -0
- package/adapters/codex/templates/extended/agent/agent_skill/starter.md +133 -0
- package/adapters/codex/templates/extended/agent/hook_policy/review-checklist.md +58 -0
- package/adapters/codex/templates/extended/agent/hook_policy/starter.md +134 -0
- package/adapters/codex/templates/extended/agent/prompt_packet/review-checklist.md +54 -0
- package/adapters/codex/templates/extended/agent/prompt_packet/starter.md +106 -0
- package/adapters/codex/templates/extended/contracts/api_contract/review-checklist.md +43 -0
- package/adapters/codex/templates/extended/contracts/api_contract/starter.md +92 -0
- package/adapters/codex/templates/extended/contracts/batch_job_contract/review-checklist.md +82 -0
- package/adapters/codex/templates/extended/contracts/batch_job_contract/starter.md +158 -0
- package/adapters/codex/templates/extended/contracts/cli_contract/review-checklist.md +43 -0
- package/adapters/codex/templates/extended/contracts/cli_contract/starter.md +93 -0
- package/adapters/codex/templates/extended/contracts/data_contract/review-checklist.md +45 -0
- package/adapters/codex/templates/extended/contracts/data_contract/starter.md +88 -0
- package/adapters/codex/templates/extended/contracts/integration_contract/review-checklist.md +77 -0
- package/adapters/codex/templates/extended/contracts/integration_contract/starter.md +158 -0
- package/adapters/codex/templates/extended/contracts/ipc_contract/review-checklist.md +78 -0
- package/adapters/codex/templates/extended/contracts/ipc_contract/starter.md +214 -0
- package/adapters/codex/templates/extended/contracts/report_contract/review-checklist.md +61 -0
- package/adapters/codex/templates/extended/contracts/report_contract/starter.md +97 -0
- package/adapters/codex/templates/extended/contracts/ui_contract/review-checklist.md +70 -0
- package/adapters/codex/templates/extended/contracts/ui_contract/starter.md +150 -0
- package/adapters/codex/templates/extended/domain/database_migration/review-checklist.md +51 -0
- package/adapters/codex/templates/extended/domain/database_migration/starter.md +115 -0
- package/adapters/codex/templates/extended/domain/domain_model/review-checklist.md +43 -0
- package/adapters/codex/templates/extended/domain/domain_model/starter.md +83 -0
- package/adapters/codex/templates/extended/governance/oss_compliance/review-checklist.md +51 -0
- package/adapters/codex/templates/extended/governance/oss_compliance/starter.md +84 -0
- package/adapters/codex/templates/extended/governance/publish_skill/review-checklist.md +58 -0
- package/adapters/codex/templates/extended/governance/publish_skill/starter.md +172 -0
- package/adapters/codex/templates/extended/governance/release_policy/review-checklist.md +57 -0
- package/adapters/codex/templates/extended/governance/release_policy/starter.md +131 -0
- package/adapters/codex/templates/extended/ops/deployment_manifest/review-checklist.md +51 -0
- package/adapters/codex/templates/extended/ops/deployment_manifest/starter.md +117 -0
- package/adapters/codex/templates/extended/ops/migration_plan/review-checklist.md +63 -0
- package/adapters/codex/templates/extended/ops/migration_plan/starter.md +117 -0
- package/adapters/codex/templates/extended/ops/performance_budget/review-checklist.md +50 -0
- package/adapters/codex/templates/extended/ops/performance_budget/starter.md +117 -0
- package/adapters/codex/templates/extended/ops/runbook/review-checklist.md +51 -0
- package/adapters/codex/templates/extended/ops/runbook/starter.md +101 -0
- package/adapters/codex/templates/extended/ops/security_review/review-checklist.md +56 -0
- package/adapters/codex/templates/extended/ops/security_review/starter.md +125 -0
- package/agent-methods/catalog.yaml +260 -0
- package/compatibility.json +9 -0
- package/package.json +85 -0
- package/runtime/claude/version-lock-stop.mjs +77 -0
- package/schemas/artifact-workflow-profile.schema.json +72 -0
- package/scripts/batch-merge.mjs +276 -0
- package/scripts/batch-split.mjs +184 -0
- package/scripts/build-adapters.mjs +195 -0
- package/scripts/build-runtime-bundles.mjs +134 -0
- package/scripts/check-compatibility.mjs +19 -0
- package/scripts/check-method-registry.mjs +461 -0
- package/scripts/check-templates.mjs +348 -0
- package/scripts/check-workflow-profile.mjs +64 -0
- package/scripts/doctor.mjs +44 -0
- package/scripts/install-git-hooks.mjs +21 -0
- package/scripts/lib/artifact-graph-runtime.mjs +189 -0
- package/scripts/lib/compatibility-policy.mjs +435 -0
- package/scripts/lib/inline-yaml-parser.mjs +216 -0
- package/scripts/lib/method-registry-version.mjs +7 -0
- package/scripts/lib/workflow-profile.mjs +645 -0
- package/scripts/run-artifact-workflow.mjs +366 -0
- package/scripts/sync-skills.mjs +149 -0
- package/skills-src/artifact-audit/SKILL.md +80 -0
- package/skills-src/artifact-batch/SKILL.md +115 -0
- package/skills-src/artifact-chain-bootstrap/SKILL.md +343 -0
- package/skills-src/artifact-chain-maintainer/SKILL.md +167 -0
- package/skills-src/artifact-generate/SKILL.md +89 -0
- package/skills-src/artifact-repair/SKILL.md +124 -0
- package/skills-src/artifact-review/SKILL.md +122 -0
- package/skills-src/artifact-workflow-worker/SKILL.md +90 -0
- package/skills-src/prd-feature/SKILL.md +68 -0
- package/skills-src/prd-feature/author/SKILL.md +92 -0
- package/skills-src/prd-feature/references/compose.md +43 -0
- package/skills-src/prd-feature/references/inspect.md +94 -0
- package/skills-src/prd-feature/references/validate.md +65 -0
- package/skills-src/prd-feature/repair/SKILL.md +135 -0
- package/skills-src/prd-feature/review/SKILL.md +134 -0
- package/skills-src/scenario-script/SKILL.md +76 -0
- package/skills-src/scenario-script/author/SKILL.md +111 -0
- package/skills-src/scenario-script/references/compose.md +43 -0
- package/skills-src/scenario-script/references/inspect.md +105 -0
- package/skills-src/scenario-script/references/validate.md +72 -0
- package/skills-src/scenario-script/repair/SKILL.md +135 -0
- package/skills-src/scenario-script/review/SKILL.md +137 -0
- package/skills-src/where-am-i/SKILL.md.tpl +233 -0
- package/templates/README.md +159 -0
- package/templates/claude/marketplace.json.tpl +20 -0
- package/templates/claude/plugin.json.tpl +11 -0
- package/templates/claude/settings.json.tpl +16 -0
- package/templates/codex/marketplace.json.tpl +20 -0
- package/templates/codex/plugin.json.tpl +27 -0
- package/templates/core/decision/review-checklist.md +35 -0
- package/templates/core/decision/starter.md +66 -0
- package/templates/core/design/review-checklist.md +41 -0
- package/templates/core/design/starter.md +84 -0
- package/templates/core/e2e_test/review-checklist.md +43 -0
- package/templates/core/e2e_test/starter.md +70 -0
- package/templates/core/feature/review-checklist.md +29 -0
- package/templates/core/feature/starter.md +43 -0
- package/templates/core/scenario/review-checklist.md +29 -0
- package/templates/core/scenario/starter.md +57 -0
- package/templates/core/test/review-checklist.md +37 -0
- package/templates/core/test/starter.md +70 -0
- package/templates/extended/ADOPTION-GUIDE.md +263 -0
- package/templates/extended/README.md +261 -0
- package/templates/extended/agent/agent_skill/review-checklist.md +51 -0
- package/templates/extended/agent/agent_skill/starter.md +133 -0
- package/templates/extended/agent/hook_policy/review-checklist.md +58 -0
- package/templates/extended/agent/hook_policy/starter.md +134 -0
- package/templates/extended/agent/prompt_packet/review-checklist.md +54 -0
- package/templates/extended/agent/prompt_packet/starter.md +106 -0
- package/templates/extended/contracts/api_contract/review-checklist.md +43 -0
- package/templates/extended/contracts/api_contract/starter.md +92 -0
- package/templates/extended/contracts/batch_job_contract/review-checklist.md +82 -0
- package/templates/extended/contracts/batch_job_contract/starter.md +158 -0
- package/templates/extended/contracts/cli_contract/review-checklist.md +43 -0
- package/templates/extended/contracts/cli_contract/starter.md +93 -0
- package/templates/extended/contracts/data_contract/review-checklist.md +45 -0
- package/templates/extended/contracts/data_contract/starter.md +88 -0
- package/templates/extended/contracts/integration_contract/review-checklist.md +77 -0
- package/templates/extended/contracts/integration_contract/starter.md +158 -0
- package/templates/extended/contracts/ipc_contract/review-checklist.md +78 -0
- package/templates/extended/contracts/ipc_contract/starter.md +214 -0
- package/templates/extended/contracts/report_contract/review-checklist.md +61 -0
- package/templates/extended/contracts/report_contract/starter.md +97 -0
- package/templates/extended/contracts/ui_contract/review-checklist.md +70 -0
- package/templates/extended/contracts/ui_contract/starter.md +150 -0
- package/templates/extended/domain/database_migration/review-checklist.md +51 -0
- package/templates/extended/domain/database_migration/starter.md +115 -0
- package/templates/extended/domain/domain_model/review-checklist.md +43 -0
- package/templates/extended/domain/domain_model/starter.md +83 -0
- package/templates/extended/governance/oss_compliance/review-checklist.md +51 -0
- package/templates/extended/governance/oss_compliance/starter.md +84 -0
- package/templates/extended/governance/publish_skill/review-checklist.md +58 -0
- package/templates/extended/governance/publish_skill/starter.md +172 -0
- package/templates/extended/governance/release_policy/review-checklist.md +57 -0
- package/templates/extended/governance/release_policy/starter.md +131 -0
- package/templates/extended/ops/deployment_manifest/review-checklist.md +51 -0
- package/templates/extended/ops/deployment_manifest/starter.md +117 -0
- package/templates/extended/ops/migration_plan/review-checklist.md +63 -0
- package/templates/extended/ops/migration_plan/starter.md +117 -0
- package/templates/extended/ops/performance_budget/review-checklist.md +50 -0
- package/templates/extended/ops/performance_budget/starter.md +117 -0
- package/templates/extended/ops/runbook/review-checklist.md +51 -0
- package/templates/extended/ops/runbook/starter.md +101 -0
- package/templates/extended/ops/security_review/review-checklist.md +56 -0
- package/templates/extended/ops/security_review/starter.md +125 -0
- package/templates/git-hooks/pre-commit.sh +43 -0
- package/templates/git-hooks/pre-push.sh +22 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @scenario S-05 @feature ACA5
|
|
3
|
+
// @feature ACA17
|
|
4
|
+
// @scenario S-56
|
|
5
|
+
import { access, chmod, mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises';
|
|
6
|
+
import { spawnSync } from 'node:child_process';
|
|
7
|
+
import { dirname, join } from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
|
|
10
|
+
const root = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
11
|
+
const check = process.argv.includes('--check');
|
|
12
|
+
|
|
13
|
+
if (check) {
|
|
14
|
+
const skillCheck = spawnSync(process.execPath, ['scripts/sync-skills.mjs', '--check'], {
|
|
15
|
+
cwd: root,
|
|
16
|
+
encoding: 'utf8',
|
|
17
|
+
});
|
|
18
|
+
if (skillCheck.status !== 0) {
|
|
19
|
+
if (skillCheck.stdout) process.stderr.write(skillCheck.stdout);
|
|
20
|
+
if (skillCheck.stderr) process.stderr.write(skillCheck.stderr);
|
|
21
|
+
process.exitCode = 1;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const packageJson = JSON.parse(await readFile(join(root, 'package.json'), 'utf-8'));
|
|
25
|
+
const vars = {
|
|
26
|
+
pluginName: 'artifact-chain-assistant',
|
|
27
|
+
version: packageJson.version,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const shellResolver = `artifact_graph() {
|
|
31
|
+
if [ -x ./node_modules/.bin/artifact-graph ]; then
|
|
32
|
+
./node_modules/.bin/artifact-graph "$@"
|
|
33
|
+
return $?
|
|
34
|
+
fi
|
|
35
|
+
if command -v artifact-graph >/dev/null 2>&1; then
|
|
36
|
+
artifact-graph "$@"
|
|
37
|
+
return $?
|
|
38
|
+
fi
|
|
39
|
+
if [ -n "\${ARTIFACT_GRAPH_LEGACY_CLI:-}" ] && [ -f "$ARTIFACT_GRAPH_LEGACY_CLI" ]; then
|
|
40
|
+
node "$ARTIFACT_GRAPH_LEGACY_CLI" "$@"
|
|
41
|
+
return $?
|
|
42
|
+
fi
|
|
43
|
+
echo "artifact-chain-assistant: artifact-graph CLI not found; install it in the project or PATH." >&2
|
|
44
|
+
return 127
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
|
|
48
|
+
const outputs = [
|
|
49
|
+
{
|
|
50
|
+
template: 'templates/codex/marketplace.json.tpl',
|
|
51
|
+
path: '.agents/plugins/marketplace.json',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
template: 'templates/claude/marketplace.json.tpl',
|
|
55
|
+
path: '.claude-plugin/marketplace.json',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
template: 'templates/codex/plugin.json.tpl',
|
|
59
|
+
path: 'adapters/codex/.codex-plugin/plugin.json',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
template: 'templates/claude/plugin.json.tpl',
|
|
63
|
+
path: 'adapters/claude/.claude-plugin/plugin.json',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
template: 'templates/claude/settings.json.tpl',
|
|
67
|
+
path: 'adapters/claude/hooks/hooks.json',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
path: 'adapters/claude/hooks/version-lock-stop.mjs',
|
|
71
|
+
content: await readFile(join(root, 'runtime/claude/version-lock-stop.mjs'), 'utf-8'),
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
path: 'adapters/claude/bin/version-lock-audit.sh',
|
|
75
|
+
content: `#!/bin/sh
|
|
76
|
+
set -u
|
|
77
|
+
|
|
78
|
+
${shellResolver}
|
|
79
|
+
artifact_graph version-lock audit --strict-missing-lock "$@"
|
|
80
|
+
`,
|
|
81
|
+
executable: true,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
path: 'adapters/claude/bin/version-lock-refresh.sh',
|
|
85
|
+
content: `#!/bin/sh
|
|
86
|
+
set -u
|
|
87
|
+
|
|
88
|
+
${shellResolver}
|
|
89
|
+
artifact_graph version-lock refresh --changed-only --staged "$@"
|
|
90
|
+
`,
|
|
91
|
+
executable: true,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
path: 'adapters/claude/commands/version-lock-audit.md',
|
|
95
|
+
content: '---\ndescription: Run strict artifact-chain version lock audit\n---\n\nRun this command from the project root:\n\n```bash\nartifact-graph version-lock audit --strict-missing-lock\n```\n',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
path: 'adapters/claude/commands/version-lock-refresh.md',
|
|
99
|
+
content: '---\ndescription: Refresh staged artifact-chain version locks\n---\n\nRun this command from the project root, then review and stage the lock file if it changes:\n\n```bash\nartifact-graph version-lock refresh --changed-only --staged --format markdown\n```\n',
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
let drift = false;
|
|
104
|
+
const stalePaths = [
|
|
105
|
+
'adapters/claude/.claude-plugin/marketplace.json',
|
|
106
|
+
'adapters/codex/commands',
|
|
107
|
+
'adapters/codex/commands/version-lock-audit.sh',
|
|
108
|
+
'adapters/codex/commands/version-lock-refresh.sh',
|
|
109
|
+
];
|
|
110
|
+
for (const stalePath of stalePaths) {
|
|
111
|
+
const target = join(root, stalePath);
|
|
112
|
+
if (check) {
|
|
113
|
+
try {
|
|
114
|
+
await access(target);
|
|
115
|
+
drift = true;
|
|
116
|
+
console.error(`Generated adapter stale path: ${stalePath}`);
|
|
117
|
+
} catch {}
|
|
118
|
+
} else {
|
|
119
|
+
await rm(target, { force: true, recursive: stalePath === 'adapters/codex/commands' });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const generatedContent = new Map();
|
|
124
|
+
for (const output of outputs) {
|
|
125
|
+
const target = join(root, output.path);
|
|
126
|
+
const content = output.content ?? render(await readFile(join(root, output.template), 'utf-8'), vars);
|
|
127
|
+
generatedContent.set(output.path, content);
|
|
128
|
+
if (check) {
|
|
129
|
+
let current = '';
|
|
130
|
+
try {
|
|
131
|
+
current = await readFile(target, 'utf-8');
|
|
132
|
+
} catch {
|
|
133
|
+
current = '';
|
|
134
|
+
}
|
|
135
|
+
if (current !== content) {
|
|
136
|
+
drift = true;
|
|
137
|
+
console.error(`Generated adapter drift: ${output.path}`);
|
|
138
|
+
}
|
|
139
|
+
if (output.executable) {
|
|
140
|
+
const mode = (await stat(target)).mode;
|
|
141
|
+
if ((mode & 0o111) === 0) {
|
|
142
|
+
drift = true;
|
|
143
|
+
console.error(`Generated adapter mode drift: ${output.path}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
147
|
+
await mkdir(dirname(target), { recursive: true });
|
|
148
|
+
await writeFile(target, content);
|
|
149
|
+
if (output.executable) {
|
|
150
|
+
await chmod(target, 0o755);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Root plugin manifests required by release-skill assess. They are deterministic copies of the
|
|
156
|
+
// generated adapter manifests above, so the adapter template render stays the single version source.
|
|
157
|
+
// The marketplace plugin source still points at ./adapters/claude and ./adapters/codex; these root
|
|
158
|
+
// files are release metadata only, not an alternate install root and not a host installation surface.
|
|
159
|
+
const rootManifestCopies = [
|
|
160
|
+
{ from: 'adapters/claude/.claude-plugin/plugin.json', path: '.claude-plugin/plugin.json' },
|
|
161
|
+
{ from: 'adapters/codex/.codex-plugin/plugin.json', path: '.codex-plugin/plugin.json' },
|
|
162
|
+
];
|
|
163
|
+
for (const copy of rootManifestCopies) {
|
|
164
|
+
const target = join(root, copy.path);
|
|
165
|
+
const content =
|
|
166
|
+
generatedContent.get(copy.from) ?? (await readFile(join(root, copy.from), 'utf-8'));
|
|
167
|
+
if (check) {
|
|
168
|
+
let current = '';
|
|
169
|
+
try {
|
|
170
|
+
current = await readFile(target, 'utf-8');
|
|
171
|
+
} catch {
|
|
172
|
+
current = '';
|
|
173
|
+
}
|
|
174
|
+
if (current !== content) {
|
|
175
|
+
drift = true;
|
|
176
|
+
console.error(`Generated root manifest drift: ${copy.path}`);
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
await mkdir(dirname(target), { recursive: true });
|
|
180
|
+
await writeFile(target, content);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (drift) {
|
|
185
|
+
process.exitCode = 1;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function render(source, variables) {
|
|
189
|
+
return `${source.replace(/\{\{(\w+)\}\}/g, (_, key) => {
|
|
190
|
+
if (!(key in variables)) {
|
|
191
|
+
throw new Error(`Unknown template variable: ${key}`);
|
|
192
|
+
}
|
|
193
|
+
return variables[key];
|
|
194
|
+
}).trimEnd()}\n`;
|
|
195
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { chmod, mkdir, readFile, readdir, rm, stat, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, join, relative } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
|
|
6
|
+
const root = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
7
|
+
const check = process.argv.includes('--check');
|
|
8
|
+
const hosts = ['codex', 'claude'];
|
|
9
|
+
const sharedFiles = [
|
|
10
|
+
'INSTALL.md',
|
|
11
|
+
'EXTENDED-ARTIFACT-CATALOG.md',
|
|
12
|
+
'EXTENDED-ARTIFACT-CATALOG.zh-CN.md',
|
|
13
|
+
'templates/README.md',
|
|
14
|
+
'compatibility.json',
|
|
15
|
+
'scripts/doctor.mjs',
|
|
16
|
+
'scripts/check-workflow-profile.mjs',
|
|
17
|
+
'scripts/run-artifact-workflow.mjs',
|
|
18
|
+
'scripts/batch-split.mjs',
|
|
19
|
+
'scripts/batch-merge.mjs',
|
|
20
|
+
'scripts/check-family-api.mjs',
|
|
21
|
+
'scripts/family-compile.mjs',
|
|
22
|
+
'scripts/family-help-render.mjs',
|
|
23
|
+
'scripts/method-query.mjs',
|
|
24
|
+
'scripts/export-family-api.mjs',
|
|
25
|
+
];
|
|
26
|
+
const sharedDirectories = ['templates/core', 'templates/extended', 'scripts/lib', 'schemas', 'agent-methods', 'family-apis', 'families-src'];
|
|
27
|
+
|
|
28
|
+
let drift = false;
|
|
29
|
+
|
|
30
|
+
for (const host of hosts) {
|
|
31
|
+
for (const path of sharedFiles) {
|
|
32
|
+
await syncFile(join(root, path), join(root, 'adapters', host, path));
|
|
33
|
+
}
|
|
34
|
+
for (const path of sharedDirectories) {
|
|
35
|
+
await syncTree(join(root, path), join(root, 'adapters', host, path));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (drift) {
|
|
40
|
+
process.exitCode = 1;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async function syncFile(source, target) {
|
|
44
|
+
const [sourceContent, sourceStat] = await Promise.all([readFile(source), stat(source)]);
|
|
45
|
+
const expectedContent = runtimeContent(source, sourceContent);
|
|
46
|
+
|
|
47
|
+
if (!check) {
|
|
48
|
+
await mkdir(dirname(target), { recursive: true });
|
|
49
|
+
await writeFile(target, expectedContent);
|
|
50
|
+
await chmod(target, sourceStat.mode & 0o777);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
const [targetContent, targetStat] = await Promise.all([readFile(target), stat(target)]);
|
|
56
|
+
if (
|
|
57
|
+
!expectedContent.equals(targetContent) ||
|
|
58
|
+
executableMode(sourceStat) !== executableMode(targetStat)
|
|
59
|
+
) {
|
|
60
|
+
reportFileDrift(target);
|
|
61
|
+
}
|
|
62
|
+
} catch {
|
|
63
|
+
reportFileDrift(target);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async function syncTree(source, target) {
|
|
68
|
+
const sourceFiles = await collectFiles(source);
|
|
69
|
+
|
|
70
|
+
if (!check) {
|
|
71
|
+
await rm(target, { recursive: true, force: true });
|
|
72
|
+
for (const sourceFile of sourceFiles) {
|
|
73
|
+
await syncFile(join(source, sourceFile), join(target, sourceFile));
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
let targetFiles = [];
|
|
79
|
+
try {
|
|
80
|
+
targetFiles = await collectFiles(target);
|
|
81
|
+
} catch {
|
|
82
|
+
reportTreeDrift(target);
|
|
83
|
+
}
|
|
84
|
+
if (!samePaths(sourceFiles, targetFiles)) {
|
|
85
|
+
reportTreeDrift(target);
|
|
86
|
+
}
|
|
87
|
+
for (const sourceFile of sourceFiles) {
|
|
88
|
+
await syncFile(join(source, sourceFile), join(target, sourceFile));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async function collectFiles(directory, current = directory) {
|
|
93
|
+
const entries = await readdir(current, { withFileTypes: true });
|
|
94
|
+
const files = [];
|
|
95
|
+
for (const entry of entries) {
|
|
96
|
+
const path = join(current, entry.name);
|
|
97
|
+
if (entry.isDirectory()) {
|
|
98
|
+
files.push(...await collectFiles(directory, path));
|
|
99
|
+
} else if (entry.isFile()) {
|
|
100
|
+
files.push(relative(directory, path));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return files.sort();
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function runtimeContent(source, content) {
|
|
107
|
+
const sourcePath = relative(root, source);
|
|
108
|
+
let runtime = content.toString('utf8');
|
|
109
|
+
if (/^EXTENDED-ARTIFACT-CATALOG(?:\.zh-CN)?\.md$/.test(sourcePath)) {
|
|
110
|
+
runtime = runtime.replaceAll('](README.md)', '](templates/README.md)');
|
|
111
|
+
}
|
|
112
|
+
if (/^templates(?:\/.*)?\/README\.md$/.test(sourcePath)) {
|
|
113
|
+
runtime = runtime.replaceAll('skills-src/', 'skills/');
|
|
114
|
+
}
|
|
115
|
+
return Buffer.from(runtime);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function executableMode(fileStat) {
|
|
119
|
+
return fileStat.mode & 0o111;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function samePaths(left, right) {
|
|
123
|
+
return left.length === right.length && left.every((path, index) => path === right[index]);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function reportFileDrift(path) {
|
|
127
|
+
drift = true;
|
|
128
|
+
console.error(`Runtime bundle drift: ${relative(root, path)}`);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function reportTreeDrift(path) {
|
|
132
|
+
drift = true;
|
|
133
|
+
console.error(`Runtime bundle tree drift: ${relative(root, path)}`);
|
|
134
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @scenario S-44 @feature ACA13
|
|
3
|
+
// @decision D-ACA-15
|
|
4
|
+
import { dirname, resolve } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { validateCompatibilityPolicy } from './lib/compatibility-policy.mjs';
|
|
7
|
+
|
|
8
|
+
const pluginRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
9
|
+
|
|
10
|
+
const issues = await validateCompatibilityPolicy(pluginRoot);
|
|
11
|
+
|
|
12
|
+
if (issues.length > 0) {
|
|
13
|
+
for (const issue of issues) {
|
|
14
|
+
process.stderr.write(`compatibility: ${issue}\n`);
|
|
15
|
+
}
|
|
16
|
+
process.exitCode = 1;
|
|
17
|
+
} else {
|
|
18
|
+
process.stdout.write('compatibility: all checks passed\n');
|
|
19
|
+
}
|