@pzy560117/codex-harness 0.1.0 → 0.1.1
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 +1 -1
- package/lib/commands/init.js +7 -1
- package/lib/release/resolve-package-source.js +6 -1
- package/package-source/AGENTS.md +57 -0
- package/package-source/PACKAGE.md +49 -0
- package/package-source/README.md +81 -0
- package/package-source/docs/codex-harness-engineering/templates/README.md +20 -0
- package/package-source/docs/codex-harness-engineering/templates/bootstrap-codex-harness.ps1 +746 -0
- package/package-source/docs/codex-harness-engineering/templates/ci/github-action-codex-review.yml +110 -0
- package/package-source/docs/codex-harness-engineering/templates/ci/github-action-codex-task.yml +46 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/architect.toml +17 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/backend-worker.toml +14 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/docs-researcher.toml +13 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/docs-worker.toml +15 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/explorer.toml +14 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/failure-triage.toml +15 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/frontend-worker.toml +14 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/harness-writer.toml +15 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/planner.toml +15 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/readonly-research.toml +13 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/reviewer.toml +13 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/security-reviewer.toml +15 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/stage1-reviewer.toml +15 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/stage2-reviewer.toml +16 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/test-planner.toml +16 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/test-runner.toml +14 -0
- package/package-source/docs/codex-harness-engineering/templates/config/agents/visual-reviewer.toml +15 -0
- package/package-source/docs/codex-harness-engineering/templates/config/codex-agent-roles.md +24 -0
- package/package-source/docs/codex-harness-engineering/templates/config/codex-config.toml +36 -0
- package/package-source/docs/codex-harness-engineering/templates/config/codex-readme.md +65 -0
- package/package-source/docs/codex-harness-engineering/templates/config/env-check.ps1 +40 -0
- package/package-source/docs/codex-harness-engineering/templates/config/env.example +12 -0
- package/package-source/docs/codex-harness-engineering/templates/config/global-AGENTS.md +40 -0
- package/package-source/docs/codex-harness-engineering/templates/config/global-config.toml +19 -0
- package/package-source/docs/codex-harness-engineering/templates/config/mcp-config.toml +38 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/agents.md +115 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/coding-style.md +74 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/constitution.md +290 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/git.rules +41 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/harness.rules +29 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/patterns.md +59 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/safety.rules +35 -0
- package/package-source/docs/codex-harness-engineering/templates/config/rules/testing.md +34 -0
- package/package-source/docs/codex-harness-engineering/templates/context/architecture-brief.md +58 -0
- package/package-source/docs/codex-harness-engineering/templates/context/dev-plan.md +160 -0
- package/package-source/docs/codex-harness-engineering/templates/context/feature-pack.md +101 -0
- package/package-source/docs/codex-harness-engineering/templates/context/repo-map.md +78 -0
- package/package-source/docs/codex-harness-engineering/templates/context/service-dependency-matrix.yaml +25 -0
- package/package-source/docs/codex-harness-engineering/templates/contracts/README.md +16 -0
- package/package-source/docs/codex-harness-engineering/templates/contracts/openapi.yaml +182 -0
- package/package-source/docs/codex-harness-engineering/templates/contracts/orval.config.ts +20 -0
- package/package-source/docs/codex-harness-engineering/templates/contracts/prism-usage.md +34 -0
- package/package-source/docs/codex-harness-engineering/templates/design/ai-image-brief.md +122 -0
- package/package-source/docs/codex-harness-engineering/templates/design/assets/README.md +24 -0
- package/package-source/docs/codex-harness-engineering/templates/design/component-map.md +31 -0
- package/package-source/docs/codex-harness-engineering/templates/design/design-brief.md +178 -0
- package/package-source/docs/codex-harness-engineering/templates/design/design-tokens.json +88 -0
- package/package-source/docs/codex-harness-engineering/templates/design/frontend-architecture.md +147 -0
- package/package-source/docs/codex-harness-engineering/templates/design/image-to-frontend-spec.md +108 -0
- package/package-source/docs/codex-harness-engineering/templates/design/screen-states.md +122 -0
- package/package-source/docs/codex-harness-engineering/templates/design/ui-image-review.md +60 -0
- package/package-source/docs/codex-harness-engineering/templates/design/visual-parity-review.md +124 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/architecture-constraints.md +83 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/demo-readme.md +73 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/frontend-quality-rules.md +138 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/governance-auto-repair.md +80 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/harness-architecture.md +78 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/install-manifest-governance.md +307 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-architecture.md +219 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-import.md +108 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-lint.md +98 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/new-project-checklist.md +7 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/new-project-usage.md +152 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/project-agents-template.md +154 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/prompt-knowledge-integration.md +89 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/regression-rules.md +45 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/requirement-prep-kit/README.md +3 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/rule-governance.md +98 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/service-dependency-matrix.md +55 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/spec-to-ui-to-code-workflow.md +196 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/task-session-strategy.md +116 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/team-knowledge-sync.md +187 -0
- package/package-source/docs/codex-harness-engineering/templates/docs/trace-format.md +74 -0
- package/package-source/docs/codex-harness-engineering/templates/governance/branch-protection-checklist.md +50 -0
- package/package-source/docs/codex-harness-engineering/templates/governance/feedback-evolution-loop.md +55 -0
- package/package-source/docs/codex-harness-engineering/templates/governance/retry-budget.yaml +30 -0
- package/package-source/docs/codex-harness-engineering/templates/governance/risk-levels.yaml +53 -0
- package/package-source/docs/codex-harness-engineering/templates/governance/sandbox-policy.md +13 -0
- package/package-source/docs/codex-harness-engineering/templates/hooks/hook-stop-verify.ps1 +818 -0
- package/package-source/docs/codex-harness-engineering/templates/hooks/hooks.json +40 -0
- package/package-source/docs/codex-harness-engineering/templates/knowledge/catalog.md +6 -0
- package/package-source/docs/codex-harness-engineering/templates/knowledge/decisions/DECISION-HARNESS-001.md +39 -0
- package/package-source/docs/codex-harness-engineering/templates/knowledge/guidelines/GUIDELINE-RULES-001.md +30 -0
- package/package-source/docs/codex-harness-engineering/templates/knowledge/knowledge-catalog.md +41 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/memory/constitution.md +72 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/scripts/powershell/check-prerequisites.ps1 +148 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/scripts/powershell/common.ps1 +137 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/scripts/powershell/create-new-feature.ps1 +279 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/scripts/powershell/setup-plan.ps1 +61 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/scripts/powershell/update-agent-context.ps1 +448 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/agent-file-template.md +28 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/checklist-template.md +40 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/e2e-plan-template.md +38 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/plan-template.md +393 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/spec-template.md +307 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/tasks-template.md +244 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/architecture/constraints.md +98 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/README.md +119 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/START-HERE.md +53 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/agent-ecosystem-practices.md +140 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/best-practices.md +261 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/codex-global-rules-example.md +292 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/README.md +64 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/contracts/openapi.yaml +25 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/contracts/orval.config.ts +20 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/ai-image-brief.md +44 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/component-map.md +17 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/design-brief.md +58 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/frontend-architecture.md +107 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/image-to-frontend-spec.md +72 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/screen-states.md +25 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/ui-image-review.md +38 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/difficulty-research.md +39 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/page-inventory.md +5 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/prd-lite.md +41 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/requirement-interface-matrix.md +32 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/state-matrix.yaml +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/generated/model/Ticket.ts +6 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/generated/ticket-api.ts +35 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/http-client.ts +8 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/ui/TicketFilterBar.tsx +72 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/plans/features/ticket-filter.dev-plan.md +48 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/progress.txt +1 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/stories/TicketFilterBar.stories.tsx +33 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/task.json +54 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/traces/DEMO-TICKET-FILTER-001-20260422-120000.json +74 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/verify.ps1 +42 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/global-rules-and-bootstrap.md +399 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/implementation-flow.md +276 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/implementation-guide.md +23 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/mode-matrix.md +34 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/project-agents-template.md +154 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/spec-to-ui-to-code-workflow.md +196 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/superpowers-codex-solo-builder-playbook.md +676 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/component-map.md +31 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/design-brief.md +178 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/design-tokens.json +88 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/frontend-architecture.md +147 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/image-to-frontend-spec.md +108 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/screen-states.md +122 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/visual-parity-review.md +124 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/frontend-quality-rules.md +138 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/AGENTS.md +165 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/CHANGELOG.md +149 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/CLAUDE.md +61 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/CODE_OF_CONDUCT.md +83 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/CONTRIBUTING.md +465 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/README.md +1383 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/SECURITY.md +53 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/SPONSORING.md +43 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/SPONSORS.md +59 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/TROUBLESHOOTING.md +446 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/architect.md +232 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/build-error-resolver.md +119 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/chief-of-staff.md +155 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/code-reviewer.md +238 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/cpp-build-resolver.md +91 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/cpp-reviewer.md +79 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/database-reviewer.md +94 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/doc-updater.md +110 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/docs-lookup.md +68 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/e2e-runner.md +110 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/go-build-resolver.md +95 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/go-reviewer.md +83 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/harness-optimizer.md +35 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/java-build-resolver.md +154 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/java-reviewer.md +105 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/kotlin-build-resolver.md +119 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/loop-operator.md +37 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/planner.md +215 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/python-reviewer.md +106 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/pytorch-build-resolver.md +122 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/refactor-cleaner.md +92 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/rust-build-resolver.md +149 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/rust-reviewer.md +95 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/security-reviewer.md +112 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/tdd-guide.md +96 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/agents/typescript-reviewer.md +122 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/aside.md +173 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/build-fix.md +64 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/checkpoint.md +78 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/claw.md +51 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/code-review.md +43 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/context-budget.md +29 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/cpp-build.md +173 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/cpp-review.md +140 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/cpp-test.md +257 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/docs.md +32 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/e2e.md +374 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/eval.md +122 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/evolve.md +194 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/go-build.md +183 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/go-review.md +156 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/go-test.md +274 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/gradle-build.md +72 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/harness-audit.md +72 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/instinct-export.md +67 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/instinct-import.md +117 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/instinct-status.md +59 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/kotlin-build.md +176 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/kotlin-review.md +144 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/kotlin-test.md +315 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/learn-eval.md +117 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/learn.md +70 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/loop-start.md +33 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/loop-status.md +25 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/model-route.md +27 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/multi-backend.md +162 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/multi-execute.md +321 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/multi-frontend.md +162 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/multi-plan.md +278 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/plan.md +118 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/pm2.md +283 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/projects.md +39 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/promote.md +41 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/prompt-optimize.md +37 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/prune.md +31 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/python-review.md +319 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/quality-gate.md +30 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/refactor-clean.md +83 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/resume-session.md +154 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/rules-distill.md +11 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/rust-build.md +189 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/rust-review.md +146 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/rust-test.md +311 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/setup-pm.md +83 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/skill-create.md +176 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/skill-health.md +54 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/tdd.md +330 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/test-coverage.md +69 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/update-codemaps.md +73 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/update-docs.md +86 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/verify.md +60 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/contexts/dev.md +23 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/contexts/research.md +30 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/contexts/review.md +25 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/examples/CLAUDE.md +100 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/examples/django-api-CLAUDE.md +308 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/examples/go-microservice-CLAUDE.md +267 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/examples/rust-api-CLAUDE.md +285 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/examples/saas-nextjs-CLAUDE.md +166 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/examples/user-CLAUDE.md +118 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/hooks/README.md +220 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/plugins/README.md +89 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/the-openclaw-guide.md +471 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/the-security-guide.md +206 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/README.md +60 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/app/Mobile_App_Production_Readiness_Framework_/347/247/273/345/212/250/347/253/257/345/205/250/345/271/263/345/217/260/347/224/237/344/272/247/345/217/257/344/270/212/347/272/277/350/247/204/350/214/203.md +2457 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/app/catalog.md +33 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/architecture.md +358 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/common/AI_Coding_Production_Control_Framework_AI/345/206/231/345/256/214/347/232/204/344/273/243/347/240/201/345/246/202/344/275/225/344/270/215/345/244/261/346/216/247.md +2055 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/common/catalog.md +34 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/initial-content.md +296 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/integration-roadmap.md +221 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/architecture-constraints.md +83 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/frontend-quality-rules.md +138 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/governance-auto-repair.md +80 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/service-dependency-matrix.md +55 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/speckit-requirements-gate.md +260 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/PACKAGE.md +49 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/README.md +52 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/init-project.ps1 +51 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/install-agent-here.ps1 +57 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/install-agent.ps1 +2506 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/root/install-user.ps1 +29 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/agents.md +115 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/coding-style.md +74 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/constitution.md +290 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/git.rules +41 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/harness.rules +29 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/patterns.md +59 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/safety.rules +35 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/testing.md +34 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/check-ai-sync-drift.ps1 +205 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/sync-ai-config-to-targets.ps1 +826 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/sync-targets.example.json +35 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/harness/harness-governance-check.ps1 +366 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/HOW_TO_USE_SKILLS.md +91 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/academic-mermaid-diagrams/SKILL.md +172 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ai-config-git-sync/SKILL.md +152 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ai-config-git-sync/references/command-recipes.md +92 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ai-ui-prompts/SKILL.md +350 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/allure-report/SKILL.md +230 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/allure-report/examples/usage.md +99 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/allure-report/scripts/view-allure.ps1 +28 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/api-auto-testing/SKILL.md +329 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/api-contract-template/SKILL.md +88 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/api-design/SKILL.md +139 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/api-integration/SKILL.md +302 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/architect/SKILL.md +211 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/auto-commit/SKILL.md +322 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/backend-patterns/SKILL.md +582 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/baseline-ui/SKILL.md +85 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/better-icons/SKILL.md +129 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/brand-design-md/README.md +215 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/brand-design-md/SKILL.md +191 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/browser-e2e-testing/SKILL.md +305 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/build-error-resolver/SKILL.md +532 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/build-fix/SKILL.md +34 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/business-rule-spec/SKILL.md +99 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/celery-tasks/SKILL.md +95 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/checkpoint/SKILL.md +79 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/cicd/SKILL.md +167 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/SKILL.md +100 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/references/windows-openrouter-clash-playbook.md +94 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/scripts/diagnose-openrouter-route.ps1 +282 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/scripts/ensure-openrouter-rule.ps1 +101 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/clickhouse-io/SKILL.md +429 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/code-review/SKILL.md +171 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/code-reviewer/SKILL.md +104 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/coding-standards/SKILL.md +520 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/consistency-checklist/SKILL.md +57 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/continuous-learning/SKILL.md +80 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/continuous-learning/config.json +18 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/continuous-learning/evaluate-session.sh +60 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/core-rules/SKILL.md +78 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/data-flow-spec/SKILL.md +63 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/database/SKILL.md +147 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/deep-interview/SKILL.md +154 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/django-drf/SKILL.md +97 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/doc-updater/SKILL.md +452 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/docker/SKILL.md +216 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/docx/SKILL.md +105 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/e2e/SKILL.md +364 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/e2e-runner/SKILL.md +708 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/error-handling/SKILL.md +245 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/eval/SKILL.md +125 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/eval-harness/SKILL.md +226 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/example-skill/README.md +37 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/example-skill/SKILL.md +141 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/example-skill/examples/usage.md +76 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/example-skill/resources/config.json +21 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/example-skill/scripts/helper.py +24 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/exception-handling-spec/SKILL.md +88 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/find-skill/SKILL.md +95 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/fixing-accessibility/SKILL.md +136 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/fixing-metadata/SKILL.md +111 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/fixing-motion-performance/SKILL.md +151 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/frontend-design/SKILL.md +58 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/frontend-first-workflow/SKILL.md +187 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/frontend-patterns/SKILL.md +631 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/fullstack-workflow/SKILL.md +85 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/git-workflow/SKILL.md +108 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/git-xianyu-analyzer/SKILL.md +346 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/git-xianyu-analyzer/scripts/download_images.py +112 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/github-research/SKILL.md +213 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/glue-coding/SKILL.md +389 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/glue-coding-workflow/SKILL.md +230 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/SKILL.md +188 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/references/current-repo-sync-matrix.md +110 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/references/stale-patterns.md +62 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/SKILL.md +152 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/agents/openai.yaml +4 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/adapt.md +190 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/animate.md +173 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/audit.md +134 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/bolder.md +113 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/brand.md +104 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/clarify.md +174 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/cognitive-load.md +106 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/colorize.md +154 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/craft.md +138 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/critique.md +213 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/delight.md +302 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/distill.md +111 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/document.md +427 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/extract.md +70 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/harden.md +347 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/interaction-design.md +195 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/layout.md +141 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/live.md +513 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/motion-design.md +99 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/onboard.md +234 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/optimize.md +258 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/overdrive.md +130 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/personas.md +178 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/polish.md +232 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/product.md +62 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/quieter.md +99 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/responsive-design.md +114 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/shape.md +136 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/spatial-design.md +100 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/teach.md +137 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/typeset.md +124 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/typography.md +159 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/reference/ux-writing.md +107 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/command-metadata.json +94 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/live-accept.mjs +465 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/live-browser.js +4684 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/live-inject.mjs +436 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/live-poll.mjs +187 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/live-server.mjs +679 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/live-wrap.mjs +395 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/live.mjs +247 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/load-context.mjs +93 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/impeccable/scripts/pin.mjs +214 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/init-autopilot/SKILL.md +143 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/interaction-detail-spec/SKILL.md +98 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/knowledge-base/SKILL.md +87 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/langgraph/SKILL.md +108 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/learn/SKILL.md +75 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/log-analysis-optimization/SKILL.md +247 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/mcp-builder/SKILL.md +50 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/midscene-fix-review/SKILL.md +115 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/midscene-framework/SKILL.md +675 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/midscene-log-analysis/SKILL.md +146 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/mobile-e2e-test-case/SKILL.md +78 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/mock-strategy/SKILL.md +111 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/openspec-apply/SKILL.md +23 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/openspec-architecture-review/SKILL.md +532 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/openspec-archive/SKILL.md +27 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/openspec-proposal/SKILL.md +28 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/orchestrate/SKILL.md +177 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/page-spec-template/SKILL.md +95 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pdf/SKILL.md +116 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/performance/SKILL.md +169 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/plan/SKILL.md +114 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/planner/SKILL.md +119 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/SKILL.md +483 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/html2pptx.md +626 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/ooxml.md +427 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/scripts/html2pptx.js +995 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/scripts/inventory.py +1020 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/scripts/rearrange.py +231 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/scripts/replace.py +385 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/pptx/scripts/thumbnail.py +450 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/SKILL.md +106 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/references/cloudflare-deploy.md +133 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/references/feature-list-template.md +67 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/references/prd-template.md +150 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/references/prompts.md +88 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/references/prototype-guide.md +156 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/references/quality-checklist.md +120 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/project-context-template/SKILL.md +187 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/project-guidelines-example/SKILL.md +350 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/project-planning/SKILL.md +134 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/project-setup/SKILL.md +148 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prompts-library/SKILL.md +362 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/property-testing/SKILL.md +304 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-e2e-planner/SKILL.md +40 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-e2e-runner/SKILL.md +26 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-mock-cleaner/SKILL.md +28 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/SKILL.md +67 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/agents/openai.yaml +7 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/scripts/configure-qoder-codex-api.ps1 +278 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/refactor-clean/SKILL.md +33 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/refactor-cleaner/SKILL.md +306 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/refactoring/SKILL.md +114 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/requirements-design-template/SKILL.md +825 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/security/SKILL.md +166 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/security-review/SKILL.md +494 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/security-reviewer/SKILL.md +545 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skill-creator/SKILL.md +356 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skill-creator/scripts/init_skill.py +303 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skill-creator/scripts/package_skill.py +110 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skill-generator/SKILL.md +491 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skills-index.md +112 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/spec-based-review/SKILL.md +178 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/spec-review/SKILL.md +395 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-analyze/SKILL.md +144 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-checklist/SKILL.md +126 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-clarify/SKILL.md +108 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-constitution/SKILL.md +83 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-e2e-tasks/SKILL.md +53 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-implement/SKILL.md +143 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-plan/SKILL.md +224 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-specify/SKILL.md +229 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-tasks/SKILL.md +187 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-taskstoissues/SKILL.md +32 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-verify/SKILL.md +142 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/state-management/SKILL.md +164 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/strategic-compact/SKILL.md +63 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/strategic-compact/suggest-compact.sh +52 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/SKILL.md +143 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/references/current-repo-notes.md +41 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/references/github-samples.md +33 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/scripts/collect-root-doc-facts.ps1 +145 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/taste-skill/SKILL.md +226 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/tdd/SKILL.md +327 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/tdd-guide/SKILL.md +280 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/tdd-workflow/SKILL.md +409 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/test-coverage/SKILL.md +32 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/SKILL.md +841 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/ai-integrity-and-originality.md +191 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/citation-templates.md +99 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/final-checklist.md +60 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/photographer-booking-paper.md +85 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/template-qingdao-city-university.md +182 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/test-result-templates.md +22 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/thesis-analysis-template.md +63 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/typescript/SKILL.md +152 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/SKILL.md +292 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/update-codemaps/SKILL.md +36 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/update-docs/SKILL.md +36 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/verification-loop/SKILL.md +125 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/verify/SKILL.md +64 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/vitest/SKILL.md +248 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/vue-arco/SKILL.md +119 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/webapp-testing/SKILL.md +179 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/xlsx/SKILL.md +142 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/README.md +15 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.analyze.md +149 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.checklist.md +125 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.clarify.md +107 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.constitution.md +82 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.e2e-testing.md +57 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.implement.md +129 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.plan.md +223 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.specify.md +228 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.tasks.md +186 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.taskstoissues.md +31 -0
- package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.verify.md +130 -0
- package/package-source/docs/codex-harness-engineering/templates/product/acceptance-criteria.md +47 -0
- package/package-source/docs/codex-harness-engineering/templates/product/difficulty-research.md +47 -0
- package/package-source/docs/codex-harness-engineering/templates/product/page-inventory.md +21 -0
- package/package-source/docs/codex-harness-engineering/templates/product/prd-lite.md +158 -0
- package/package-source/docs/codex-harness-engineering/templates/product/requirement-interface-matrix.md +37 -0
- package/package-source/docs/codex-harness-engineering/templates/product/state-matrix.yaml +105 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/controller-loop.md +88 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/failure-triage.md +67 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/harness-audit.md +52 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/implement-one-task.md +148 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/repair-one-finding.md +67 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/review-one-task.md +43 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/review-stage1-spec.md +109 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/review-stage2-quality.md +80 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/visual-evaluator.md +78 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/backend-worker.md +41 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/docs-worker.md +28 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/frontend-worker.md +46 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/harness-writer.md +40 -0
- package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/test-runner.md +27 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/AGENTS.md +50 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/codex-loop.ps1 +2398 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/doctor.ps1 +1253 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/progress.txt +0 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/project-task-template.json +1042 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/scripts/test-install-modes.ps1 +3 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/scripts/validate-init-queue.ps1 +175 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/scripts/validate-queue-placeholders.ps1 +23 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/smoke-task.json +52 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/task-run-profile.json +86 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/task.json +49 -0
- package/package-source/docs/codex-harness-engineering/templates/runtime/verify.ps1 +285 -0
- package/package-source/docs/codex-harness-engineering/templates/scripts/ai-workflow/check-ai-sync-drift.ps1 +205 -0
- package/package-source/docs/codex-harness-engineering/templates/scripts/harness/harness-governance-check.ps1 +366 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/01-spec-guide-and-index.md +32 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/02-requirement-sources.md +26 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/03-proposal-and-scope.md +36 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/04-prd.md +29 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/05-user-stories-and-acceptance.md +25 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/06-functional-spec.md +33 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/07-nfr.md +29 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/08-architecture-design.md +31 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/09-api-contract.md +37 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/10-data-model.md +31 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/11-security-design.md +26 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/12-implementation-plan.md +23 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/13-test-strategy.md +26 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/14-rtm.md +24 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/spec-manifest.json +27 -0
- package/package-source/docs/codex-harness-engineering/templates/spec/spec-manifest.schema.json +40 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/ACCEPTANCE_CRITERIA.md +39 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/ACCEPTANCE_EXAMPLES.md +37 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/EVIDENCE_PROTOCOL.md +48 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/NATURAL_LANGUAGE_TEST_CASES.md +689 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/REGRESSION_PLAN.md +20 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/RISK_BASED_TEST_PLAN.md +16 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/TEST_DATA_MATRIX.md +30 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/TEST_STRATEGY.md +97 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/TRACEABILITY_MATRIX.md +22 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/coverage-policy.md +25 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/e2e-plan.md +38 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/failure-findings.example.json +21 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/failure-triage.md +24 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/test-data-plan.md +36 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/test-matrix.md +26 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/test-report.md +41 -0
- package/package-source/docs/codex-harness-engineering/templates/testing/verify-matrix.md +46 -0
- package/package-source/docs/codex-harness-engineering/templates/trace/eval-case.yaml +24 -0
- package/package-source/docs/codex-harness-engineering/templates/trace/trace.json +30 -0
- package/package-source/docs/codex-harness-engineering/templates/trace/trace.schema.json +225 -0
- package/package-source/install-manifest.json +453 -0
- package/package-source/install-manifest.schema.json +80 -0
- package/package-source/tools/install/ai-workflow/check-ai-sync-drift.ps1 +205 -0
- package/package-source/tools/install/ai-workflow/sync-ai-config-to-targets.ps1 +826 -0
- package/package-source/tools/install/ai-workflow/sync-targets.example.json +35 -0
- package/package-source/tools/install/bootstrap-codex-harness.ps1 +760 -0
- package/package-source/tools/install/env-check.ps1 +40 -0
- package/package-source/tools/install/init-project.ps1 +51 -0
- package/package-source/tools/install/install-agent-here.ps1 +57 -0
- package/package-source/tools/install/install-agent.ps1 +2510 -0
- package/package-source/tools/install/install-user.ps1 +29 -0
- package/package.json +3 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared context loader for every impeccable command that needs to know
|
|
3
|
+
* "who is this for" and "what does this look like".
|
|
4
|
+
*
|
|
5
|
+
* Input: project root (process.cwd()).
|
|
6
|
+
*
|
|
7
|
+
* Output (JSON to stdout):
|
|
8
|
+
* {
|
|
9
|
+
* hasProduct: boolean, // PRODUCT.md found (or auto-migrated)
|
|
10
|
+
* product: string | null, // PRODUCT.md contents
|
|
11
|
+
* productPath: string | null, // relative path
|
|
12
|
+
* hasDesign: boolean, // DESIGN.md found
|
|
13
|
+
* design: string | null, // DESIGN.md contents
|
|
14
|
+
* designPath: string | null,
|
|
15
|
+
* migrated: boolean, // true if we auto-renamed .impeccable.md -> PRODUCT.md
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* Filename matching is case-insensitive for PRODUCT.md and DESIGN.md. The
|
|
19
|
+
* Google DESIGN.md convention is uppercase at repo root; Kiro-style and
|
|
20
|
+
* lowercase variants are also matched so users don't get punished for case.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import fs from 'node:fs';
|
|
24
|
+
import path from 'node:path';
|
|
25
|
+
|
|
26
|
+
const PRODUCT_NAMES = ['PRODUCT.md', 'Product.md', 'product.md'];
|
|
27
|
+
const DESIGN_NAMES = ['DESIGN.md', 'Design.md', 'design.md'];
|
|
28
|
+
const LEGACY_NAMES = ['.impeccable.md'];
|
|
29
|
+
|
|
30
|
+
export function loadContext(cwd = process.cwd()) {
|
|
31
|
+
let migrated = false;
|
|
32
|
+
|
|
33
|
+
// 1. Look for PRODUCT.md (case-insensitive)
|
|
34
|
+
let productPath = firstExisting(cwd, PRODUCT_NAMES);
|
|
35
|
+
|
|
36
|
+
// 2. Legacy: if no PRODUCT.md but .impeccable.md exists, rename in place
|
|
37
|
+
if (!productPath) {
|
|
38
|
+
const legacyPath = firstExisting(cwd, LEGACY_NAMES);
|
|
39
|
+
if (legacyPath) {
|
|
40
|
+
const newPath = path.join(cwd, 'PRODUCT.md');
|
|
41
|
+
try {
|
|
42
|
+
fs.renameSync(legacyPath, newPath);
|
|
43
|
+
productPath = newPath;
|
|
44
|
+
migrated = true;
|
|
45
|
+
} catch {
|
|
46
|
+
// Rename failed (permissions, etc.) — fall back to reading legacy in place
|
|
47
|
+
productPath = legacyPath;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// 3. DESIGN.md (case-insensitive)
|
|
53
|
+
const designPath = firstExisting(cwd, DESIGN_NAMES);
|
|
54
|
+
|
|
55
|
+
const product = productPath ? safeRead(productPath) : null;
|
|
56
|
+
const design = designPath ? safeRead(designPath) : null;
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
hasProduct: !!product,
|
|
60
|
+
product,
|
|
61
|
+
productPath: productPath ? path.relative(cwd, productPath) : null,
|
|
62
|
+
hasDesign: !!design,
|
|
63
|
+
design,
|
|
64
|
+
designPath: designPath ? path.relative(cwd, designPath) : null,
|
|
65
|
+
migrated,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function firstExisting(cwd, names) {
|
|
70
|
+
for (const name of names) {
|
|
71
|
+
const abs = path.join(cwd, name);
|
|
72
|
+
if (fs.existsSync(abs)) return abs;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function safeRead(p) {
|
|
78
|
+
try { return fs.readFileSync(p, 'utf-8'); } catch { return null; }
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// CLI mode — print the context as JSON
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
|
|
85
|
+
function cli() {
|
|
86
|
+
const result = loadContext(process.cwd());
|
|
87
|
+
console.log(JSON.stringify(result, null, 2));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const _running = process.argv[1];
|
|
91
|
+
if (_running?.endsWith('load-context.mjs') || _running?.endsWith('load-context.mjs/')) {
|
|
92
|
+
cli();
|
|
93
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
(function(y,v){typeof exports=="object"&&typeof module!="undefined"?v(exports):typeof define=="function"&&define.amd?define(["exports"],v):(y=typeof globalThis!="undefined"?globalThis:y||self,v(y.modernScreenshot={}))})(this,function(y){"use strict";var rr=Object.defineProperty,nr=Object.defineProperties;var or=Object.getOwnPropertyDescriptors;var Z=Object.getOwnPropertySymbols;var xe=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable;var Oe=Math.pow,Le=(y,v,N)=>v in y?rr(y,v,{enumerable:!0,configurable:!0,writable:!0,value:N}):y[v]=N,D=(y,v)=>{for(var N in v||(v={}))xe.call(v,N)&&Le(y,N,v[N]);if(Z)for(var N of Z(v))Me.call(v,N)&&Le(y,N,v[N]);return y},M=(y,v)=>nr(y,or(v));var je=(y,v)=>{var N={};for(var R in y)xe.call(y,R)&&v.indexOf(R)<0&&(N[R]=y[R]);if(y!=null&&Z)for(var R of Z(y))v.indexOf(R)<0&&Me.call(y,R)&&(N[R]=y[R]);return N};var C=(y,v,N)=>new Promise((R,O)=>{var X=P=>{try{q(N.next(P))}catch(W){O(W)}},j=P=>{try{q(N.throw(P))}catch(W){O(W)}},q=P=>P.done?R(P.value):Promise.resolve(P.value).then(X,j);q((N=N.apply(y,v)).next())});var Be;function v(e,t){return e[13]=1,e[14]=t>>8,e[15]=t&255,e[16]=t>>8,e[17]=t&255,e}const N=112,R=72,O=89,X=115;let j;function q(){const e=new Int32Array(256);for(let t=0;t<256;t++){let r=t;for(let n=0;n<8;n++)r=r&1?3988292384^r>>>1:r>>>1;e[t]=r}return e}function P(e){let t=-1;j||(j=q());for(let r=0;r<e.length;r++)t=j[(t^e[r])&255]^t>>>8;return t^-1}function W(e){const t=e.length-1;for(let r=t;r>=4;r--)if(e[r-4]===9&&e[r-3]===N&&e[r-2]===R&&e[r-1]===O&&e[r]===X)return r-3;return 0}function ae(e,t,r=!1){const n=new Uint8Array(13);t*=39.3701,n[0]=N,n[1]=R,n[2]=O,n[3]=X,n[4]=t>>>24,n[5]=t>>>16,n[6]=t>>>8,n[7]=t&255,n[8]=n[4],n[9]=n[5],n[10]=n[6],n[11]=n[7],n[12]=1;const i=P(n),a=new Uint8Array(4);if(a[0]=i>>>24,a[1]=i>>>16,a[2]=i>>>8,a[3]=i&255,r){const s=W(e);return e.set(n,s),e.set(a,s+13),e}else{const s=new Uint8Array(4);s[0]=0,s[1]=0,s[2]=0,s[3]=9;const o=new Uint8Array(54);return o.set(e,0),o.set(s,33),o.set(n,37),o.set(a,50),o}}const qe="AAlwSFlz",We="AAAJcEhZ",He="AAAACXBI";function Ve(e){let t=e.indexOf(qe);return t===-1&&(t=e.indexOf(We)),t===-1&&(t=e.indexOf(He)),t}const se="[modern-screenshot]",U=typeof window!="undefined",ze=U&&"Worker"in window,ie=U&&"atob"in window,Xe=U&&"btoa"in window,ee=U?(Be=window.navigator)==null?void 0:Be.userAgent:"",le=ee.includes("Chrome"),G=ee.includes("AppleWebKit")&&!le,te=ee.includes("Firefox"),Ge=e=>e&&"__CONTEXT__"in e,Ye=e=>e.constructor.name==="CSSFontFaceRule",Je=e=>e.constructor.name==="CSSImportRule",Ke=e=>e.constructor.name==="CSSLayerBlockRule",I=e=>e.nodeType===1,H=e=>typeof e.className=="object",ce=e=>e.tagName==="image",Qe=e=>e.tagName==="use",V=e=>I(e)&&typeof e.style!="undefined"&&!H(e),Ze=e=>e.nodeType===8,et=e=>e.nodeType===3,$=e=>e.tagName==="IMG",Y=e=>e.tagName==="VIDEO",tt=e=>e.tagName==="CANVAS",rt=e=>e.tagName==="TEXTAREA",nt=e=>e.tagName==="INPUT",ot=e=>e.tagName==="STYLE",at=e=>e.tagName==="SCRIPT",st=e=>e.tagName==="SELECT",it=e=>e.tagName==="SLOT",lt=e=>e.tagName==="IFRAME",ct=(...e)=>console.warn(se,...e);function ut(e){var r;const t=(r=e==null?void 0:e.createElement)==null?void 0:r.call(e,"canvas");return t&&(t.height=t.width=1),!!t&&"toDataURL"in t&&!!t.toDataURL("image/webp").includes("image/webp")}const re=e=>e.startsWith("data:");function ue(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(U&&e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i)||!U)return e;const r=J().implementation.createHTMLDocument(),n=r.createElement("base"),i=r.createElement("a");return r.head.appendChild(n),r.body.appendChild(i),t&&(n.href=t),i.href=e,i.href}function J(e){var t;return(t=e&&I(e)?e==null?void 0:e.ownerDocument:e)!=null?t:window.document}const K="http://www.w3.org/2000/svg";function fe(e,t,r){const n=J(r).createElementNS(K,"svg");return n.setAttributeNS(null,"width",e.toString()),n.setAttributeNS(null,"height",t.toString()),n.setAttributeNS(null,"viewBox",`0 0 ${e} ${t}`),n}function de(e,t){let r=new XMLSerializer().serializeToString(e);return t&&(r=r.replace(/[\u0000-\u0008\v\f\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/gu,"")),`data:image/svg+xml;charset=utf-8,${encodeURIComponent(r)}`}function ft(e,t="image/png",r=1){return C(this,null,function*(){try{return yield new Promise((n,i)=>{e.toBlob(a=>{a?n(a):i(new Error("Blob is null"))},t,r)})}catch(n){if(ie)return dt(e.toDataURL(t,r));throw n}})}function dt(e){var o,c;const[t,r]=e.split(","),n=(c=(o=t.match(/data:(.+);/))==null?void 0:o[1])!=null?c:void 0,i=window.atob(r),a=i.length,s=new Uint8Array(a);for(let u=0;u<a;u+=1)s[u]=i.charCodeAt(u);return new Blob([s],{type:n})}function ge(e,t){return new Promise((r,n)=>{const i=new FileReader;i.onload=()=>r(i.result),i.onerror=()=>n(i.error),i.onabort=()=>n(new Error(`Failed read blob to ${t}`)),t==="dataUrl"?i.readAsDataURL(e):t==="arrayBuffer"&&i.readAsArrayBuffer(e)})}const gt=e=>ge(e,"dataUrl"),mt=e=>ge(e,"arrayBuffer");function _(e,t){const r=J(t).createElement("img");return r.decoding="sync",r.loading="eager",r.src=e,r}function L(e,t){return new Promise(r=>{const{timeout:n,ownerDocument:i,onError:a,onWarn:s}=t!=null?t:{},o=typeof e=="string"?_(e,J(i)):e;let c=null,u=null;function l(){r(o),c&&clearTimeout(c),u==null||u()}if(n&&(c=setTimeout(l,n)),Y(o)){const d=o.currentSrc||o.src;if(!d)return o.poster?L(o.poster,t).then(r):l();if(o.readyState>=2)return l();const m=l,f=h=>{s==null||s("Failed video load",d,h),a==null||a(h),l()};u=()=>{o.removeEventListener("loadeddata",m),o.removeEventListener("error",f)},o.addEventListener("loadeddata",m,{once:!0}),o.addEventListener("error",f,{once:!0})}else{const d=ce(o)?o.href.baseVal:o.currentSrc||o.src;if(!d)return l();const m=()=>C(this,null,function*(){if($(o)&&"decode"in o)try{yield o.decode()}catch(h){s==null||s("Failed to decode image, trying to render anyway",o.dataset.originalSrc||d,h)}l()}),f=h=>{s==null||s("Failed image load",o.dataset.originalSrc||d,h),l()};if($(o)&&o.complete)return m();u=()=>{o.removeEventListener("load",m),o.removeEventListener("error",f)},o.addEventListener("load",m,{once:!0}),o.addEventListener("error",f,{once:!0})}})}function me(e,t){return C(this,null,function*(){V(e)&&($(e)||Y(e)?yield L(e,t):yield Promise.all(["img","video"].flatMap(r=>Array.from(e.querySelectorAll(r)).map(n=>L(n,t)))))})}const he=function(){let t=0;const r=()=>`0000${(Math.random()*Oe(36,4)<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${r()}${t}`)}();function we(e){return e==null?void 0:e.split(",").map(t=>t.trim().replace(/"|'/g,"").toLowerCase()).filter(Boolean)}let pe=0;function ht(e){const t=`${se}[#${pe}]`;return pe++,{time:r=>e&&console.time(`${t} ${r}`),timeEnd:r=>e&&console.timeEnd(`${t} ${r}`),warn:(...r)=>e&&ct(...r)}}function wt(e){return{cache:e?"no-cache":"force-cache"}}function k(e,t){return C(this,null,function*(){return Ge(e)?e:ye(e,M(D({},t),{autoDestruct:!0}))})}function ye(e,t){return C(this,null,function*(){var f,h,g,p,E;const{scale:r=1,workerUrl:n,workerNumber:i=1}=t||{},a=!!(t!=null&&t.debug),s=(f=t==null?void 0:t.features)!=null?f:!0,o=(h=e.ownerDocument)!=null?h:U?window.document:void 0,c=(p=(g=e.ownerDocument)==null?void 0:g.defaultView)!=null?p:U?window:void 0,u=new Map,l=M(D({width:0,height:0,quality:1,type:"image/png",scale:r,backgroundColor:null,style:null,filter:null,maximumCanvasSize:0,timeout:3e4,progress:null,debug:a,fetch:D({requestInit:wt((E=t==null?void 0:t.fetch)==null?void 0:E.bypassingCache),placeholderImage:"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",bypassingCache:!1},t==null?void 0:t.fetch),fetchFn:null,font:{},drawImageInterval:100,workerUrl:null,workerNumber:i,onCloneEachNode:null,onCloneNode:null,onEmbedNode:null,onCreateForeignObjectSvg:null,includeStyleProperties:null,autoDestruct:!1},t),{__CONTEXT__:!0,log:ht(a),node:e,ownerDocument:o,ownerWindow:c,dpi:r===1?null:96*r,svgStyleElement:be(o),svgDefsElement:o==null?void 0:o.createElementNS(K,"defs"),svgStyles:new Map,defaultComputedStyles:new Map,workers:[...Array.from({length:ze&&n&&i?i:0})].map(()=>{try{const b=new Worker(n);return b.onmessage=w=>C(this,null,function*(){var A,F,B,$e;const{url:S,result:T}=w.data;T?(F=(A=u.get(S))==null?void 0:A.resolve)==null||F.call(A,T):($e=(B=u.get(S))==null?void 0:B.reject)==null||$e.call(B,new Error(`Error receiving message from worker: ${S}`))}),b.onmessageerror=w=>{var T,A;const{url:S}=w.data;(A=(T=u.get(S))==null?void 0:T.reject)==null||A.call(T,new Error(`Error receiving message from worker: ${S}`))},b}catch(b){return l.log.warn("Failed to new Worker",b),null}}).filter(Boolean),fontFamilies:new Map,fontCssTexts:new Map,acceptOfImage:`${[ut(o)&&"image/webp","image/svg+xml","image/*","*/*"].filter(Boolean).join(",")};q=0.8`,requests:u,drawImageCount:0,tasks:[],features:s,isEnable:b=>{var w,S;return b==="restoreScrollPosition"?typeof s=="boolean"?!1:(w=s[b])!=null?w:!1:typeof s=="boolean"?s:(S=s[b])!=null?S:!0},shadowRoots:[]});l.log.time("wait until load"),yield me(e,{timeout:l.timeout,onWarn:l.log.warn}),l.log.timeEnd("wait until load");const{width:d,height:m}=pt(e,l);return l.width=d,l.height=m,l})}function be(e){if(!e)return;const t=e.createElement("style"),r=t.ownerDocument.createTextNode(`
|
|
2
|
+
.______background-clip--text {
|
|
3
|
+
background-clip: text;
|
|
4
|
+
-webkit-background-clip: text;
|
|
5
|
+
}
|
|
6
|
+
`);return t.appendChild(r),t}function pt(e,t){let{width:r,height:n}=t;if(I(e)&&(!r||!n)){const i=e.getBoundingClientRect();r=r||i.width||Number(e.getAttribute("width"))||0,n=n||i.height||Number(e.getAttribute("height"))||0}return{width:r,height:n}}function yt(e,t){return C(this,null,function*(){const{log:r,timeout:n,drawImageCount:i,drawImageInterval:a}=t;r.time("image to canvas");const s=yield L(e,{timeout:n,onWarn:t.log.warn}),{canvas:o,context2d:c}=bt(e.ownerDocument,t),u=()=>{try{c==null||c.drawImage(s,0,0,o.width,o.height)}catch(l){t.log.warn("Failed to drawImage",l)}};if(u(),t.isEnable("fixSvgXmlDecode"))for(let l=0;l<i;l++)yield new Promise(d=>{setTimeout(()=>{c==null||c.clearRect(0,0,o.width,o.height),u(),d()},l+a)});return t.drawImageCount=0,r.timeEnd("image to canvas"),o})}function bt(e,t){const{width:r,height:n,scale:i,backgroundColor:a,maximumCanvasSize:s}=t,o=e.createElement("canvas");o.width=Math.floor(r*i),o.height=Math.floor(n*i),o.style.width=`${r}px`,o.style.height=`${n}px`,s&&(o.width>s||o.height>s)&&(o.width>s&&o.height>s?o.width>o.height?(o.height*=s/o.width,o.width=s):(o.width*=s/o.height,o.height=s):o.width>s?(o.height*=s/o.width,o.width=s):(o.width*=s/o.height,o.height=s));const c=o.getContext("2d");return c&&a&&(c.fillStyle=a,c.fillRect(0,0,o.width,o.height)),{canvas:o,context2d:c}}function Se(e,t){if(e.ownerDocument)try{const a=e.toDataURL();if(a!=="data:,")return _(a,e.ownerDocument)}catch(a){t.log.warn("Failed to clone canvas",a)}const r=e.cloneNode(!1),n=e.getContext("2d"),i=r.getContext("2d");try{return n&&i&&i.putImageData(n.getImageData(0,0,e.width,e.height),0,0),r}catch(a){t.log.warn("Failed to clone canvas",a)}return r}function St(e,t){var r;try{if((r=e==null?void 0:e.contentDocument)!=null&&r.documentElement)return ne(e.contentDocument.documentElement,t)}catch(n){t.log.warn("Failed to clone iframe",n)}return e.cloneNode(!1)}function Et(e){const t=e.cloneNode(!1);return e.currentSrc&&e.currentSrc!==e.src&&(t.src=e.currentSrc,t.srcset=""),t.loading==="lazy"&&(t.loading="eager"),t}function Ct(e,t){return C(this,null,function*(){if(e.ownerDocument&&!e.currentSrc&&e.poster)return _(e.poster,e.ownerDocument);const r=e.cloneNode(!1);r.crossOrigin="anonymous",e.currentSrc&&e.currentSrc!==e.src&&(r.src=e.currentSrc);const n=r.ownerDocument;if(n){let i=!0;if(yield L(r,{onError:()=>i=!1,onWarn:t.log.warn}),!i)return e.poster?_(e.poster,e.ownerDocument):r;r.currentTime=e.currentTime,yield new Promise(s=>{r.addEventListener("seeked",s,{once:!0})});const a=n.createElement("canvas");a.width=e.offsetWidth,a.height=e.offsetHeight;try{const s=a.getContext("2d");s&&s.drawImage(r,0,0,a.width,a.height)}catch(s){return t.log.warn("Failed to clone video",s),e.poster?_(e.poster,e.ownerDocument):r}return Se(a,t)}return r})}function Tt(e,t){return tt(e)?Se(e,t):lt(e)?St(e,t):$(e)?Et(e):Y(e)?Ct(e,t):e.cloneNode(!1)}function vt(e){let t=e.sandbox;if(!t){const{ownerDocument:r}=e;try{r&&(t=r.createElement("iframe"),t.id=`__SANDBOX__${he()}`,t.width="0",t.height="0",t.style.visibility="hidden",t.style.position="fixed",r.body.appendChild(t),t.srcdoc='<!DOCTYPE html><meta charset="UTF-8"><title></title><body>',e.sandbox=t)}catch(n){e.log.warn("Failed to getSandBox",n)}}return t}const At=["width","height","-webkit-text-fill-color"],Nt=["stroke","fill"];function Ee(e,t,r){const{defaultComputedStyles:n}=r,i=e.nodeName.toLowerCase(),a=H(e)&&i!=="svg",s=a?Nt.map(g=>[g,e.getAttribute(g)]).filter(([,g])=>g!==null):[],o=[a&&"svg",i,s.map((g,p)=>`${g}=${p}`).join(","),t].filter(Boolean).join(":");if(n.has(o))return n.get(o);const c=vt(r),u=c==null?void 0:c.contentWindow;if(!u)return new Map;const l=u==null?void 0:u.document;let d,m;a?(d=l.createElementNS(K,"svg"),m=d.ownerDocument.createElementNS(d.namespaceURI,i),s.forEach(([g,p])=>{m.setAttributeNS(null,g,p)}),d.appendChild(m)):d=m=l.createElement(i),m.textContent=" ",l.body.appendChild(d);const f=u.getComputedStyle(m,t),h=new Map;for(let g=f.length,p=0;p<g;p++){const E=f.item(p);At.includes(E)||h.set(E,f.getPropertyValue(E))}return l.body.removeChild(d),n.set(o,h),h}function Ce(e,t,r){var o;const n=new Map,i=[],a=new Map;if(r)for(const c of r)s(c);else for(let c=e.length,u=0;u<c;u++){const l=e.item(u);s(l)}for(let c=i.length,u=0;u<c;u++)(o=a.get(i[u]))==null||o.forEach((l,d)=>n.set(d,l));function s(c){const u=e.getPropertyValue(c),l=e.getPropertyPriority(c),d=c.lastIndexOf("-"),m=d>-1?c.substring(0,d):void 0;if(m){let f=a.get(m);f||(f=new Map,a.set(m,f)),f.set(c,[u,l])}t.get(c)===u&&!l||(m?i.push(m):n.set(c,[u,l]))}return n}function Rt(e,t,r,n){var d,m,f,h;const{ownerWindow:i,includeStyleProperties:a,currentParentNodeStyle:s}=n,o=t.style,c=i.getComputedStyle(e),u=Ee(e,null,n);s==null||s.forEach((g,p)=>{u.delete(p)});const l=Ce(c,u,a);l.delete("transition-property"),l.delete("all"),l.delete("d"),l.delete("content"),r&&(l.delete("position"),l.delete("margin-top"),l.delete("margin-right"),l.delete("margin-bottom"),l.delete("margin-left"),l.delete("margin-block-start"),l.delete("margin-block-end"),l.delete("margin-inline-start"),l.delete("margin-inline-end"),l.set("box-sizing",["border-box",""])),((d=l.get("background-clip"))==null?void 0:d[0])==="text"&&t.classList.add("______background-clip--text"),le&&(l.has("font-kerning")||l.set("font-kerning",["normal",""]),(((m=l.get("overflow-x"))==null?void 0:m[0])==="hidden"||((f=l.get("overflow-y"))==null?void 0:f[0])==="hidden")&&((h=l.get("text-overflow"))==null?void 0:h[0])==="ellipsis"&&e.scrollWidth===e.clientWidth&&l.set("text-overflow",["clip",""]));for(let g=o.length,p=0;p<g;p++)o.removeProperty(o.item(p));return l.forEach(([g,p],E)=>{o.setProperty(E,g,p)}),l}function It(e,t){(rt(e)||nt(e)||st(e))&&t.setAttribute("value",e.value)}const kt=["::before","::after"],Dt=["::-webkit-scrollbar","::-webkit-scrollbar-button","::-webkit-scrollbar-thumb","::-webkit-scrollbar-track","::-webkit-scrollbar-track-piece","::-webkit-scrollbar-corner","::-webkit-resizer"];function Pt(e,t,r,n,i){const{ownerWindow:a,svgStyleElement:s,svgStyles:o,currentNodeStyle:c}=n;if(!s||!a)return;function u(l){var w;const d=a.getComputedStyle(e,l);let m=d.getPropertyValue("content");if(!m||m==="none")return;i==null||i(m),m=m.replace(/(')|(")|(counter\(.+\))/g,"");const f=[he()],h=Ee(e,l,n);c==null||c.forEach((S,T)=>{h.delete(T)});const g=Ce(d,h,n.includeStyleProperties);g.delete("content"),g.delete("-webkit-locale"),((w=g.get("background-clip"))==null?void 0:w[0])==="text"&&t.classList.add("______background-clip--text");const p=[`content: '${m}';`];if(g.forEach(([S,T],A)=>{p.push(`${A}: ${S}${T?" !important":""};`)}),p.length===1)return;try{t.className=[t.className,...f].join(" ")}catch(S){n.log.warn("Failed to copyPseudoClass",S);return}const E=p.join(`
|
|
7
|
+
`);let b=o.get(E);b||(b=[],o.set(E,b)),b.push(`.${f[0]}${l}`)}kt.forEach(u),r&&Dt.forEach(u)}const Te=new Set(["symbol"]);function ve(e,t,r,n,i){return C(this,null,function*(){if(I(r)&&(ot(r)||at(r))||n.filter&&!n.filter(r))return;Te.has(t.nodeName)||Te.has(r.nodeName)?n.currentParentNodeStyle=void 0:n.currentParentNodeStyle=n.currentNodeStyle;const a=yield ne(r,n,!1,i);n.isEnable("restoreScrollPosition")&&Ut(e,a),t.appendChild(a)})}function Ae(e,t,r,n){return C(this,null,function*(){var a;let i=e.firstChild;I(e)&&e.shadowRoot&&(i=(a=e.shadowRoot)==null?void 0:a.firstChild,r.shadowRoots.push(e.shadowRoot));for(let s=i;s;s=s.nextSibling)if(!Ze(s))if(I(s)&&it(s)&&typeof s.assignedNodes=="function"){const o=s.assignedNodes();for(let c=0;c<o.length;c++)yield ve(e,t,o[c],r,n)}else yield ve(e,t,s,r,n)})}function Ut(e,t){if(!V(e)||!V(t))return;const{scrollTop:r,scrollLeft:n}=e;if(!r&&!n)return;const{transform:i}=t.style,a=new DOMMatrix(i),{a:s,b:o,c,d:u}=a;a.a=1,a.b=0,a.c=0,a.d=1,a.translateSelf(-n,-r),a.a=s,a.b=o,a.c=c,a.d=u,t.style.transform=a.toString()}function _t(e,t){const{backgroundColor:r,width:n,height:i,style:a}=t,s=e.style;if(r&&s.setProperty("background-color",r,"important"),n&&s.setProperty("width",`${n}px`,"important"),i&&s.setProperty("height",`${i}px`,"important"),a)for(const o in a)s[o]=a[o]}const Ft=/^[\w-:]+$/;function ne(e,t,r=!1,n){return C(this,null,function*(){var u,l,d,m;const{ownerDocument:i,ownerWindow:a,fontFamilies:s,onCloneEachNode:o}=t;if(i&&et(e))return n&&/\S/.test(e.data)&&n(e.data),i.createTextNode(e.data);if(i&&a&&I(e)&&(V(e)||H(e))){const f=yield Tt(e,t);if(t.isEnable("removeAbnormalAttributes")){const w=f.getAttributeNames();for(let S=w.length,T=0;T<S;T++){const A=w[T];Ft.test(A)||f.removeAttribute(A)}}const h=t.currentNodeStyle=Rt(e,f,r,t);r&&_t(f,t);let g=!1;if(t.isEnable("copyScrollbar")){const w=[(u=h.get("overflow-x"))==null?void 0:u[0],(l=h.get("overflow-y"))==null?void 0:l[0]];g=w.includes("scroll")||(w.includes("auto")||w.includes("overlay"))&&(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth)}const p=(d=h.get("text-transform"))==null?void 0:d[0],E=we((m=h.get("font-family"))==null?void 0:m[0]),b=E?w=>{p==="uppercase"?w=w.toUpperCase():p==="lowercase"?w=w.toLowerCase():p==="capitalize"&&(w=w[0].toUpperCase()+w.substring(1)),E.forEach(S=>{let T=s.get(S);T||s.set(S,T=new Set),w.split("").forEach(A=>T.add(A))})}:void 0;return Pt(e,f,g,t,b),It(e,f),Y(e)||(yield Ae(e,f,t,b)),yield o==null?void 0:o(f),f}const c=e.cloneNode(!1);return yield Ae(e,c,t),yield o==null?void 0:o(c),c})}function Ne(e){if(e.ownerDocument=void 0,e.ownerWindow=void 0,e.svgStyleElement=void 0,e.svgDefsElement=void 0,e.svgStyles.clear(),e.defaultComputedStyles.clear(),e.sandbox){try{e.sandbox.remove()}catch(t){e.log.warn("Failed to destroyContext",t)}e.sandbox=void 0}e.workers=[],e.fontFamilies.clear(),e.fontCssTexts.clear(),e.requests.clear(),e.tasks=[],e.shadowRoots=[]}function Bt(e){const o=e,{url:t,timeout:r,responseType:n}=o,i=je(o,["url","timeout","responseType"]),a=new AbortController,s=r?setTimeout(()=>a.abort(),r):void 0;return fetch(t,D({signal:a.signal},i)).then(c=>{if(!c.ok)throw new Error("Failed fetch, not 2xx response",{cause:c});switch(n){case"arrayBuffer":return c.arrayBuffer();case"dataUrl":return c.blob().then(gt);case"text":default:return c.text()}}).finally(()=>clearTimeout(s))}function z(e,t){const{url:r,requestType:n="text",responseType:i="text",imageDom:a}=t;let s=r;const{timeout:o,acceptOfImage:c,requests:u,fetchFn:l,fetch:{requestInit:d,bypassingCache:m,placeholderImage:f},font:h,workers:g,fontFamilies:p}=e;n==="image"&&(G||te)&&e.drawImageCount++;let E=u.get(r);if(!E){m&&m instanceof RegExp&&m.test(s)&&(s+=(/\?/.test(s)?"&":"?")+new Date().getTime());const b=n.startsWith("font")&&h&&h.minify,w=new Set;b&&n.split(";")[1].split(",").forEach(F=>{p.has(F)&&p.get(F).forEach(B=>w.add(B))});const S=b&&w.size,T=D({url:s,timeout:o,responseType:S?"arrayBuffer":i,headers:n==="image"?{accept:c}:void 0},d);E={type:n,resolve:void 0,reject:void 0,response:null},E.response=C(this,null,function*(){if(l&&n==="image"){const A=yield l(r);if(A)return A}return!G&&r.startsWith("http")&&g.length?new Promise((A,F)=>{g[u.size&g.length-1].postMessage(D({rawUrl:r},T)),E.resolve=A,E.reject=F}):Bt(T)}).catch(A=>{if(u.delete(r),n==="image"&&f)return e.log.warn("Failed to fetch image base64, trying to use placeholder image",s),typeof f=="string"?f:f(a);throw A}),u.set(r,E)}return E.response}function Re(e,t,r,n){return C(this,null,function*(){if(!Ie(e))return e;for(const[i,a]of $t(e,t))try{const s=yield z(r,{url:a,requestType:n?"image":"text",responseType:"dataUrl"});e=e.replace(Lt(i),`$1${s}$3`)}catch(s){r.log.warn("Failed to fetch css data url",i,s)}return e})}function Ie(e){return/url\((['"]?)([^'"]+?)\1\)/.test(e)}const ke=/url\((['"]?)([^'"]+?)\1\)/g;function $t(e,t){const r=[];return e.replace(ke,(n,i,a)=>(r.push([a,ue(a,t)]),n)),r.filter(([n])=>!re(n))}function Lt(e){const t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,"g")}const xt=["background-image","border-image-source","-webkit-border-image","-webkit-mask-image","list-style-image"];function Mt(e,t){return xt.map(r=>{const n=e.getPropertyValue(r);return!n||n==="none"?null:((G||te)&&t.drawImageCount++,Re(n,null,t,!0).then(i=>{!i||n===i||e.setProperty(r,i,e.getPropertyPriority(r))}))}).filter(Boolean)}function Ot(e,t){if($(e)){const r=e.currentSrc||e.src;if(!re(r))return[z(t,{url:r,imageDom:e,requestType:"image",responseType:"dataUrl"}).then(n=>{n&&(e.srcset="",e.dataset.originalSrc=r,e.src=n||"")})];(G||te)&&t.drawImageCount++}else if(H(e)&&!re(e.href.baseVal)){const r=e.href.baseVal;return[z(t,{url:r,imageDom:e,requestType:"image",responseType:"dataUrl"}).then(n=>{n&&(e.dataset.originalSrc=r,e.href.baseVal=n||"")})]}return[]}function jt(e,t){var o;const{ownerDocument:r,svgDefsElement:n}=t,i=(o=e.getAttribute("href"))!=null?o:e.getAttribute("xlink:href");if(!i)return[];const[a,s]=i.split("#");if(s){const c=`#${s}`,u=t.shadowRoots.reduce((l,d)=>l!=null?l:d.querySelector(`svg ${c}`),r==null?void 0:r.querySelector(`svg ${c}`));if(a&&e.setAttribute("href",c),n!=null&&n.querySelector(c))return[];if(u)return n==null||n.appendChild(u.cloneNode(!0)),[];if(a)return[z(t,{url:a,responseType:"text"}).then(l=>{n==null||n.insertAdjacentHTML("beforeend",l)})]}return[]}function De(e,t){const{tasks:r}=t;I(e)&&(($(e)||ce(e))&&r.push(...Ot(e,t)),Qe(e)&&r.push(...jt(e,t))),V(e)&&r.push(...Mt(e.style,t)),e.childNodes.forEach(n=>{De(n,t)})}function qt(e,t){return C(this,null,function*(){const{ownerDocument:r,svgStyleElement:n,fontFamilies:i,fontCssTexts:a,tasks:s,font:o}=t;if(!(!r||!n||!i.size))if(o&&o.cssText){const c=Ue(o.cssText,t);n.appendChild(r.createTextNode(`${c}
|
|
8
|
+
`))}else{const c=Array.from(r.styleSheets).filter(f=>{try{return"cssRules"in f&&!!f.cssRules.length}catch(h){return t.log.warn(`Error while reading CSS rules from ${f.href}`,h),!1}}),u=r.implementation.createHTMLDocument(""),l=u.createElement("style");u.head.appendChild(l);const d=l.sheet;yield Promise.all(c.flatMap(f=>Array.from(f.cssRules).map(h=>C(this,null,function*(){if(Je(h)){const g=h.href;let p="";try{p=yield z(t,{url:g,requestType:"text",responseType:"text"})}catch(b){t.log.warn(`Error fetch remote css import from ${g}`,b)}const E=p.replace(ke,(b,w,S)=>b.replace(S,ue(S,g)));for(const b of Ht(E))try{d.insertRule(b,d.cssRules.length)}catch(w){t.log.warn("Error inserting rule from remote css import",{rule:b,error:w})}}})))),d.cssRules.length&&c.push(d);const m=[];c.forEach(f=>{oe(f.cssRules,m)}),m.filter(f=>{var h;return Ye(f)&&Ie(f.style.getPropertyValue("src"))&&((h=we(f.style.getPropertyValue("font-family")))==null?void 0:h.some(g=>i.has(g)))}).forEach(f=>{const h=f,g=a.get(h.cssText);g?n.appendChild(r.createTextNode(`${g}
|
|
9
|
+
`)):s.push(Re(h.cssText,h.parentStyleSheet?h.parentStyleSheet.href:null,t).then(p=>{p=Ue(p,t),a.set(h.cssText,p),n.appendChild(r.createTextNode(`${p}
|
|
10
|
+
`))}))})}})}const Wt=/(\/\*[\s\S]*?\*\/)/g,Pe=/((@.*?keyframes [\s\S]*?){([\s\S]*?}\s*?)})/gi;function Ht(e){if(e==null)return[];const t=[];let r=e.replace(Wt,"");for(;;){const a=Pe.exec(r);if(!a)break;t.push(a[0])}r=r.replace(Pe,"");const n=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,i=new RegExp("((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})","gi");for(;;){let a=n.exec(r);if(a)i.lastIndex=n.lastIndex;else if(a=i.exec(r),a)n.lastIndex=i.lastIndex;else break;t.push(a[0])}return t}const Vt=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,zt=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function Ue(e,t){const{font:r}=t,n=r?r==null?void 0:r.preferredFormat:void 0;return n?e.replace(zt,i=>{for(;;){const[a,,s]=Vt.exec(i)||[];if(!s)return"";if(s===n)return`src: ${a};`}}):e}function oe(e,t=[]){for(const r of Array.from(e))Ke(r)?t.push(...oe(r.cssRules)):"cssRules"in r?oe(r.cssRules,t):t.push(r);return t}const Xt=/\bx?link:?href\s*=\s*["'](?!data:)[^"']+["']/i;function Gt(e){return Xt.test(e.innerHTML)}function _e(e,t){return C(this,null,function*(){const r=yield k(e,t);if(I(r.node)&&H(r.node)&&!Gt(r.node))return r.node;const{ownerDocument:n,log:i,tasks:a,svgStyleElement:s,svgDefsElement:o,svgStyles:c,font:u,progress:l,autoDestruct:d,onCloneNode:m,onEmbedNode:f,onCreateForeignObjectSvg:h}=r;i.time("clone node");const g=yield ne(r.node,r,!0);if(s&&n){let S="";c.forEach((T,A)=>{S+=`${T.join(`,
|
|
11
|
+
`)} {
|
|
12
|
+
${A}
|
|
13
|
+
}
|
|
14
|
+
`}),s.appendChild(n.createTextNode(S))}i.timeEnd("clone node"),yield m==null?void 0:m(g),u!==!1&&I(g)&&(i.time("embed web font"),yield qt(g,r),i.timeEnd("embed web font")),i.time("embed node"),De(g,r);const p=a.length;let E=0;const b=()=>C(this,null,function*(){for(;;){const S=a.pop();if(!S)break;try{yield S}catch(T){r.log.warn("Failed to run task",T)}l==null||l(++E,p)}});l==null||l(E,p),yield Promise.all([...Array.from({length:4})].map(b)),i.timeEnd("embed node"),yield f==null?void 0:f(g);const w=Yt(g,r);return o&&w.insertBefore(o,w.children[0]),s&&w.insertBefore(s,w.children[0]),d&&Ne(r),yield h==null?void 0:h(w),w})}function Yt(e,t){const{width:r,height:n}=t,i=fe(r,n,e.ownerDocument),a=i.ownerDocument.createElementNS(i.namespaceURI,"foreignObject");return a.setAttributeNS(null,"x","0%"),a.setAttributeNS(null,"y","0%"),a.setAttributeNS(null,"width","100%"),a.setAttributeNS(null,"height","100%"),a.append(e),i.appendChild(a),i}function Q(e,t){return C(this,null,function*(){var s;const r=yield k(e,t),n=yield _e(r),i=de(n,r.isEnable("removeControlCharacter"));r.autoDestruct||(r.svgStyleElement=be(r.ownerDocument),r.svgDefsElement=(s=r.ownerDocument)==null?void 0:s.createElementNS(K,"defs"),r.svgStyles.clear());const a=_(i,n.ownerDocument);return yield yt(a,r)})}function Jt(e,t){return C(this,null,function*(){const r=yield k(e,t),{log:n,type:i,quality:a,dpi:s}=r,o=yield Q(r);n.time("canvas to blob");const c=yield ft(o,i,a);if(["image/png","image/jpeg"].includes(i)&&s){const u=yield mt(c.slice(0,33));let l=new Uint8Array(u);return i==="image/png"?l=ae(l,s):i==="image/jpeg"&&(l=v(l,s)),n.timeEnd("canvas to blob"),new Blob([l,c.slice(33)],{type:i})}return n.timeEnd("canvas to blob"),c})}function x(e,t){return C(this,null,function*(){const r=yield k(e,t),{log:n,quality:i,type:a,dpi:s}=r,o=yield Q(r);n.time("canvas to data url");let c=o.toDataURL(a,i);if(["image/png","image/jpeg"].includes(a)&&s&&ie&&Xe){const[u,l]=c.split(",");let d=0,m=!1;if(a==="image/png"){const w=Ve(l);w>=0?(d=Math.ceil((w+28)/3)*4,m=!0):d=33/3*4}else a==="image/jpeg"&&(d=18/3*4);const f=l.substring(0,d),h=l.substring(d),g=window.atob(f),p=new Uint8Array(g.length);for(let w=0;w<p.length;w++)p[w]=g.charCodeAt(w);const E=a==="image/png"?ae(p,s,m):v(p,s),b=window.btoa(String.fromCharCode(...E));c=[u,",",b,h].join("")}return n.timeEnd("canvas to data url"),c})}function Fe(e,t){return C(this,null,function*(){const r=yield k(e,t),{width:n,height:i,ownerDocument:a}=r,s=yield x(r),o=fe(n,i,a),c=o.ownerDocument.createElementNS(o.namespaceURI,"image");return c.setAttributeNS(null,"href",s),c.setAttributeNS(null,"height","100%"),c.setAttributeNS(null,"width","100%"),o.appendChild(c),de(o,r.isEnable("removeControlCharacter"))})}function Kt(e,t){return C(this,null,function*(){const r=yield k(e,t),{ownerDocument:n,width:i,height:a,scale:s,type:o}=r,c=o==="image/svg+xml"?yield Fe(r):yield x(r),u=_(c,n);return u.width=Math.floor(i*s),u.height=Math.floor(a*s),u.style.width=`${i}px`,u.style.height=`${a}px`,u})}function Qt(e,t){return C(this,null,function*(){return x(yield k(e,M(D({},t),{type:"image/jpeg"})))})}function Zt(e,t){return C(this,null,function*(){const r=yield k(e,t),n=yield Q(r);return n.getContext("2d").getImageData(0,0,n.width,n.height).data})}function er(e,t){return C(this,null,function*(){return x(yield k(e,M(D({},t),{type:"image/png"})))})}function tr(e,t){return C(this,null,function*(){return x(yield k(e,M(D({},t),{type:"image/webp"})))})}y.createContext=ye,y.destroyContext=Ne,y.domToBlob=Jt,y.domToCanvas=Q,y.domToDataUrl=x,y.domToForeignObjectSvg=_e,y.domToImage=Kt,y.domToJpeg=Qt,y.domToPixel=Zt,y.domToPng=er,y.domToSvg=Fe,y.domToWebp=tr,y.loadMedia=L,y.waitUntilLoad=me,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})});
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Pin/unpin sub-commands as standalone skill shortcuts.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* node <scripts_path>/pin.mjs pin <command>
|
|
7
|
+
* node <scripts_path>/pin.mjs unpin <command>
|
|
8
|
+
*
|
|
9
|
+
* `pin audit` creates a lightweight /audit skill that redirects to /impeccable audit.
|
|
10
|
+
* `unpin audit` removes that shortcut.
|
|
11
|
+
*
|
|
12
|
+
* The script discovers harness directories (.claude/skills, .cursor/skills, etc.)
|
|
13
|
+
* in the project root and creates/removes the pin in all of them.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, rmSync, readdirSync } from 'node:fs';
|
|
17
|
+
import { join, resolve, dirname } from 'node:path';
|
|
18
|
+
import { fileURLToPath } from 'node:url';
|
|
19
|
+
|
|
20
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
|
|
22
|
+
// All known harness directories
|
|
23
|
+
const HARNESS_DIRS = [
|
|
24
|
+
'.claude', '.cursor', '.gemini', '.codex', '.agents',
|
|
25
|
+
'.trae', '.trae-cn', '.pi', '.opencode', '.kiro', '.rovodev',
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
// Valid sub-command names
|
|
29
|
+
const VALID_COMMANDS = [
|
|
30
|
+
'craft', 'teach', 'extract', 'document', 'shape',
|
|
31
|
+
'critique', 'audit',
|
|
32
|
+
'polish', 'bolder', 'quieter', 'distill', 'harden', 'onboard', 'live',
|
|
33
|
+
'animate', 'colorize', 'typeset', 'layout', 'delight', 'overdrive',
|
|
34
|
+
'clarify', 'adapt', 'optimize',
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
// Marker to identify pinned skills (so unpin doesn't delete user skills)
|
|
38
|
+
const PIN_MARKER = '<!-- impeccable-pinned-skill -->';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Walk up from startDir to find a project root.
|
|
42
|
+
*/
|
|
43
|
+
function findProjectRoot(startDir = process.cwd()) {
|
|
44
|
+
let dir = resolve(startDir);
|
|
45
|
+
while (dir !== '/') {
|
|
46
|
+
if (
|
|
47
|
+
existsSync(join(dir, 'package.json')) ||
|
|
48
|
+
existsSync(join(dir, '.git')) ||
|
|
49
|
+
existsSync(join(dir, 'skills-lock.json'))
|
|
50
|
+
) {
|
|
51
|
+
return dir;
|
|
52
|
+
}
|
|
53
|
+
const parent = resolve(dir, '..');
|
|
54
|
+
if (parent === dir) break;
|
|
55
|
+
dir = parent;
|
|
56
|
+
}
|
|
57
|
+
return resolve(startDir);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Find harness skill directories that have an impeccable skill installed.
|
|
62
|
+
*/
|
|
63
|
+
function findHarnessDirs(projectRoot) {
|
|
64
|
+
const dirs = [];
|
|
65
|
+
for (const harness of HARNESS_DIRS) {
|
|
66
|
+
const skillsDir = join(projectRoot, harness, 'skills');
|
|
67
|
+
// Only pin in harness dirs that already have impeccable installed
|
|
68
|
+
const impeccableDir = join(skillsDir, 'impeccable');
|
|
69
|
+
if (existsSync(impeccableDir) || existsSync(join(skillsDir, 'i-impeccable'))) {
|
|
70
|
+
dirs.push(skillsDir);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return dirs;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Load command metadata (descriptions for pinned skills).
|
|
78
|
+
*/
|
|
79
|
+
function loadCommandMetadata() {
|
|
80
|
+
const metadataPath = join(__dirname, 'command-metadata.json');
|
|
81
|
+
if (existsSync(metadataPath)) {
|
|
82
|
+
return JSON.parse(readFileSync(metadataPath, 'utf-8'));
|
|
83
|
+
}
|
|
84
|
+
return {};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Generate a pinned skill's SKILL.md content.
|
|
89
|
+
*/
|
|
90
|
+
function generatePinnedSkill(command, metadata) {
|
|
91
|
+
const desc = metadata[command]?.description || `Shortcut for /impeccable ${command}.`;
|
|
92
|
+
const hint = metadata[command]?.argumentHint || '[target]';
|
|
93
|
+
|
|
94
|
+
return `---
|
|
95
|
+
name: ${command}
|
|
96
|
+
description: "${desc}"
|
|
97
|
+
argument-hint: "${hint}"
|
|
98
|
+
user-invocable: true
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
${PIN_MARKER}
|
|
102
|
+
|
|
103
|
+
This is a pinned shortcut for \`{{command_prefix}}impeccable ${command}\`.
|
|
104
|
+
|
|
105
|
+
Invoke {{command_prefix}}impeccable ${command}, passing along any arguments provided here, and follow its instructions.
|
|
106
|
+
`;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Pin a command: create shortcut skill in all harness dirs.
|
|
111
|
+
*/
|
|
112
|
+
function pin(command, projectRoot) {
|
|
113
|
+
const metadata = loadCommandMetadata();
|
|
114
|
+
const harnessDirs = findHarnessDirs(projectRoot);
|
|
115
|
+
|
|
116
|
+
if (harnessDirs.length === 0) {
|
|
117
|
+
console.log('No harness directories with impeccable installed found.');
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const content = generatePinnedSkill(command, metadata);
|
|
122
|
+
let created = 0;
|
|
123
|
+
|
|
124
|
+
for (const skillsDir of harnessDirs) {
|
|
125
|
+
// Check if skill already exists (and isn't a pin)
|
|
126
|
+
const skillDir = join(skillsDir, command);
|
|
127
|
+
if (existsSync(skillDir)) {
|
|
128
|
+
const existingMd = join(skillDir, 'SKILL.md');
|
|
129
|
+
if (existsSync(existingMd)) {
|
|
130
|
+
const existing = readFileSync(existingMd, 'utf-8');
|
|
131
|
+
if (!existing.includes(PIN_MARKER)) {
|
|
132
|
+
console.log(` SKIP: ${skillDir} (non-pinned skill already exists)`);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
mkdirSync(skillDir, { recursive: true });
|
|
139
|
+
writeFileSync(join(skillDir, 'SKILL.md'), content, 'utf-8');
|
|
140
|
+
console.log(` + ${skillDir}`);
|
|
141
|
+
created++;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (created > 0) {
|
|
145
|
+
console.log(`\nPinned '${command}' as a standalone shortcut in ${created} location(s).`);
|
|
146
|
+
console.log(`You can now use /${command} directly.`);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return created > 0;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Unpin a command: remove shortcut skill from all harness dirs.
|
|
154
|
+
*/
|
|
155
|
+
function unpin(command, projectRoot) {
|
|
156
|
+
const harnessDirs = findHarnessDirs(projectRoot);
|
|
157
|
+
let removed = 0;
|
|
158
|
+
|
|
159
|
+
for (const skillsDir of harnessDirs) {
|
|
160
|
+
const skillDir = join(skillsDir, command);
|
|
161
|
+
if (!existsSync(skillDir)) continue;
|
|
162
|
+
|
|
163
|
+
const skillMd = join(skillDir, 'SKILL.md');
|
|
164
|
+
if (!existsSync(skillMd)) continue;
|
|
165
|
+
|
|
166
|
+
// Safety: only remove if it's a pinned skill
|
|
167
|
+
const content = readFileSync(skillMd, 'utf-8');
|
|
168
|
+
if (!content.includes(PIN_MARKER)) {
|
|
169
|
+
console.log(` SKIP: ${skillDir} (not a pinned skill)`);
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
rmSync(skillDir, { recursive: true, force: true });
|
|
174
|
+
console.log(` - ${skillDir}`);
|
|
175
|
+
removed++;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (removed > 0) {
|
|
179
|
+
console.log(`\nUnpinned '${command}' from ${removed} location(s).`);
|
|
180
|
+
console.log(`Use /impeccable ${command} to access it.`);
|
|
181
|
+
} else {
|
|
182
|
+
console.log(`No pinned '${command}' shortcut found.`);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return removed > 0;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// --- CLI ---
|
|
189
|
+
const [,, action, command] = process.argv;
|
|
190
|
+
|
|
191
|
+
if (!action || !command) {
|
|
192
|
+
console.log('Usage: node pin.mjs <pin|unpin> <command>');
|
|
193
|
+
console.log(`\nAvailable commands: ${VALID_COMMANDS.join(', ')}`);
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (action !== 'pin' && action !== 'unpin') {
|
|
198
|
+
console.error(`Unknown action: ${action}. Use 'pin' or 'unpin'.`);
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (!VALID_COMMANDS.includes(command)) {
|
|
203
|
+
console.error(`Unknown command: ${command}`);
|
|
204
|
+
console.error(`Available commands: ${VALID_COMMANDS.join(', ')}`);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const root = findProjectRoot();
|
|
209
|
+
|
|
210
|
+
if (action === 'pin') {
|
|
211
|
+
pin(command, root);
|
|
212
|
+
} else {
|
|
213
|
+
unpin(command, root);
|
|
214
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: init-autopilot
|
|
3
|
+
description: Use when starting work in this repository and needing the default startup routine, staged task.json execution flow, and automatic continuation until ready tasks finish or block.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Init Autopilot
|
|
7
|
+
|
|
8
|
+
本 skill 是这个仓库的默认启动协议。每次进入仓库先读本文件,再决定是先做需求澄清,还是直接进入自动续跑。
|
|
9
|
+
|
|
10
|
+
## 何时使用
|
|
11
|
+
|
|
12
|
+
- 刚进入本仓库,需要确定默认工作流
|
|
13
|
+
- 根目录存在 `task.json`,希望自动连续执行任务
|
|
14
|
+
- 根目录不存在 `task.json`,需要先生成 spec 草稿
|
|
15
|
+
- 用户明确要求“自动运行”“继续执行”“不要每次都手动继续”
|
|
16
|
+
|
|
17
|
+
## 每次会话初始化
|
|
18
|
+
|
|
19
|
+
1. 读取根目录 `task.json`(如果存在)
|
|
20
|
+
2. 读取根目录 `progress.txt`(如果存在)
|
|
21
|
+
3. 读取根目录 `AGENTS.md`
|
|
22
|
+
4. 若当前目标目录还有更深层 `AGENTS.md` 或工作空间规范,再继续读取
|
|
23
|
+
5. 统一使用简体中文输出
|
|
24
|
+
|
|
25
|
+
## 模式判断
|
|
26
|
+
|
|
27
|
+
### 模式 A:Spec
|
|
28
|
+
|
|
29
|
+
触发条件:
|
|
30
|
+
|
|
31
|
+
- 根目录不存在 `task.json`
|
|
32
|
+
- 用户明确要求“创建 spec”“讨论需求”“规划方案”“proposal”“change”
|
|
33
|
+
|
|
34
|
+
执行规则:
|
|
35
|
+
|
|
36
|
+
1. 每轮只问必要问题,控制在 1 到 3 个
|
|
37
|
+
2. 先形成 `task.json` 草稿
|
|
38
|
+
3. 明确提示“请确认后再开始执行”
|
|
39
|
+
4. 未收到用户“确认”前,禁止开始实现
|
|
40
|
+
|
|
41
|
+
### 模式 B:Autopilot
|
|
42
|
+
|
|
43
|
+
触发条件:
|
|
44
|
+
|
|
45
|
+
- 根目录已存在 `task.json`
|
|
46
|
+
- 用户没有明确要求停留在讨论阶段
|
|
47
|
+
|
|
48
|
+
执行规则:
|
|
49
|
+
|
|
50
|
+
1. 优先读取 `task.json.runtime`
|
|
51
|
+
2. 选择下一个可执行任务:
|
|
52
|
+
- `passes = false`
|
|
53
|
+
- `priority` 数字最小
|
|
54
|
+
- `dependencies` 全部完成
|
|
55
|
+
3. 实现、验证、写入 `progress.txt`
|
|
56
|
+
4. 仅在验证通过后,把当前任务更新为完成
|
|
57
|
+
5. 单个 Codex 会话只处理一个任务,后续任务由自动驱动器继续启动
|
|
58
|
+
6. 只有在“全部完成”“进入阻塞”或“无进展保护触发”时才停止
|
|
59
|
+
7. 不要在每个任务后要求用户手动输入“继续”
|
|
60
|
+
|
|
61
|
+
## 自动驱动器规则
|
|
62
|
+
|
|
63
|
+
优先顺序:
|
|
64
|
+
|
|
65
|
+
1. 使用 `task.json.runtime.driver`
|
|
66
|
+
2. 若未声明 driver,则回退到仓库默认命令:
|
|
67
|
+
|
|
68
|
+
```powershell
|
|
69
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools/harness/codex-loop.ps1
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
若自动驱动器已可用:
|
|
73
|
+
|
|
74
|
+
- 先运行驱动器,而不是手工逐个任务续跑
|
|
75
|
+
- 驱动器内部使用 `codex exec`,不要再使用旧式 `codex -p`
|
|
76
|
+
- 驱动器返回“全部完成”时,直接汇报结果
|
|
77
|
+
- 驱动器返回阻塞时,按阻塞模板汇报并停止
|
|
78
|
+
- Windows 当前不要依赖 Codex hooks 作为主驱动;hooks 只作为 WSL/Linux 或未来版本增强层
|
|
79
|
+
|
|
80
|
+
## 验证与提交
|
|
81
|
+
|
|
82
|
+
每个任务都要遵守:
|
|
83
|
+
|
|
84
|
+
1. 优先执行任务自己的 `test_command`
|
|
85
|
+
2. 若没有 `test_command`,再按项目默认验证方式执行
|
|
86
|
+
3. 验证失败时,禁止标记完成
|
|
87
|
+
4. 代码、`task.json`、`progress.txt` 应尽量放在同一个提交里
|
|
88
|
+
5. 不要回滚与当前任务无关的现有改动
|
|
89
|
+
|
|
90
|
+
### 测试实践映射防漂移
|
|
91
|
+
|
|
92
|
+
当任务涉及 `task.json`、`package.json` scripts、`tests/`、`docs/testing/verify-matrix.md`、release gate 或 mock/local/docker/live evidence 边界时,必须先检查并保持测试实践映射:
|
|
93
|
+
|
|
94
|
+
1. 每个关键 test script 必须有明确 task 归属,不能只有 `package.json` 脚本或只有 release 总门禁。
|
|
95
|
+
2. `task.json` 中相关任务必须写清 `test_command`、需求范围、依赖形态和 evidence 边界。
|
|
96
|
+
3. `docs/testing/verify-matrix.md` 必须有“测试实践到 task 映射”或等价表,列出 test script、task id、需求范围、依赖形态和 evidence 边界。
|
|
97
|
+
4. mock/local rehearsal、docker/mock release、外部 live 验证必须分开描述,不能互相替代。
|
|
98
|
+
5. 如果仓库存在 `tests/mock-local/test-practice-matrix.test.mjs` 或同类守护测试,修改上述文件后必须运行覆盖它的测试命令,例如 `npm run test:mock-local`。
|
|
99
|
+
6. 新增、删除或改名 test script 时,同步更新 task、verify-matrix 和守护测试;否则不得把任务标记为完成。
|
|
100
|
+
|
|
101
|
+
## 阻塞处理
|
|
102
|
+
|
|
103
|
+
遇到下列情况立即停止自动续跑:
|
|
104
|
+
|
|
105
|
+
- 缺少环境变量或密钥
|
|
106
|
+
- 外部服务不可用
|
|
107
|
+
- 需要人工授权
|
|
108
|
+
- 任务描述矛盾或信息不足
|
|
109
|
+
|
|
110
|
+
阻塞时必须:
|
|
111
|
+
|
|
112
|
+
1. 在 `progress.txt` 记录阻塞原因
|
|
113
|
+
2. 输出结构化阻塞信息
|
|
114
|
+
3. 停止继续执行
|
|
115
|
+
|
|
116
|
+
阻塞模板:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
🚫 BLOCKED - 需要人工介入
|
|
120
|
+
|
|
121
|
+
**当前任务**: [task-id] [task-description]
|
|
122
|
+
|
|
123
|
+
**已完成的工作**:
|
|
124
|
+
- [已完成部分]
|
|
125
|
+
|
|
126
|
+
**阻塞原因**:
|
|
127
|
+
- [具体原因]
|
|
128
|
+
|
|
129
|
+
**需要人工操作**:
|
|
130
|
+
1. [步骤 1]
|
|
131
|
+
2. [步骤 2]
|
|
132
|
+
|
|
133
|
+
**解除阻塞后优先执行**:
|
|
134
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File .\tools/harness/codex-loop.ps1
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## 快速自检
|
|
138
|
+
|
|
139
|
+
- 是否已经读取了根目录 `task.json`
|
|
140
|
+
- 是否判断清楚当前是 `Spec` 还是 `Autopilot`
|
|
141
|
+
- 若可自动续跑,是否已经优先使用 driver
|
|
142
|
+
- 是否理解“单个 Codex 会话只做一个任务,driver 负责连续多轮”
|
|
143
|
+
- 是否只报告有验证证据的结果
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: interaction-detail-spec
|
|
3
|
+
description: 交互细节规格模板
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 交互细节规格模板
|
|
7
|
+
|
|
8
|
+
## 键盘操作 ⚠️ 必填
|
|
9
|
+
|
|
10
|
+
| 按键 | 作用域 | 行为 | 备注 |
|
|
11
|
+
|------|--------|------|------|
|
|
12
|
+
| Tab | 全局 | 按顺序切换焦点 | 遵循DOM顺序 |
|
|
13
|
+
| Shift+Tab | 全局 | 反向切换焦点 | |
|
|
14
|
+
| Enter | 表单 | 提交表单 | 单行输入框 |
|
|
15
|
+
| Enter | 表格 | 确认编辑 | 行内编辑时 |
|
|
16
|
+
| Esc | 弹窗 | 关闭弹窗 | |
|
|
17
|
+
| Esc | 下拉框 | 关闭下拉 | |
|
|
18
|
+
| Esc | 编辑状态 | 取消编辑 | |
|
|
19
|
+
| Space | 复选框 | 切换选中 | |
|
|
20
|
+
| ↑↓ | 下拉框 | 切换选项 | |
|
|
21
|
+
| ↑↓ | 表格 | 切换行 | |
|
|
22
|
+
|
|
23
|
+
## 快捷键 ⚠️ 必填
|
|
24
|
+
|
|
25
|
+
| 快捷键 | 作用域 | 行为 | 是否支持 |
|
|
26
|
+
|--------|--------|------|----------|
|
|
27
|
+
| Ctrl/Cmd + S | 表单页 | 保存 | ✅/❌ |
|
|
28
|
+
| Ctrl/Cmd + Enter | 表单页 | 提交 | ✅/❌ |
|
|
29
|
+
| Ctrl/Cmd + Z | 编辑器 | 撤销 | ✅/❌ |
|
|
30
|
+
| Ctrl/Cmd + Shift + Z | 编辑器 | 重做 | ✅/❌ |
|
|
31
|
+
| Ctrl/Cmd + A | 列表页 | 全选 | ✅/❌ |
|
|
32
|
+
| Ctrl/Cmd + F | 全局 | 搜索 | ✅/❌ |
|
|
33
|
+
| Delete | 列表页 | 删除选中项 | ✅/❌ |
|
|
34
|
+
|
|
35
|
+
## 手势操作(移动端) ⚠️ 必填
|
|
36
|
+
|
|
37
|
+
| 手势 | 作用域 | 行为 | 备注 |
|
|
38
|
+
|------|--------|------|------|
|
|
39
|
+
| 下拉 | 列表页 | 刷新 | 顶部下拉 |
|
|
40
|
+
| 上拉 | 列表页 | 加载更多 | 底部上拉 |
|
|
41
|
+
| 左滑 | 列表项 | 显示操作按钮 | 删除/编辑 |
|
|
42
|
+
| 右滑 | 列表项 | 快捷操作 | 标记已读等 |
|
|
43
|
+
| 双指缩放 | 图片 | 放大/缩小 | |
|
|
44
|
+
| 长按 | 列表项 | 进入多选模式 | |
|
|
45
|
+
| 双击 | 图片 | 放大/还原 | |
|
|
46
|
+
|
|
47
|
+
## 拖拽交互 ⚠️ 必填
|
|
48
|
+
|
|
49
|
+
| 拖拽对象 | 目标区域 | 行为 | 视觉反馈 |
|
|
50
|
+
|----------|----------|------|----------|
|
|
51
|
+
| 列表项 | 同列表 | 排序 | 占位符+拖拽预览 |
|
|
52
|
+
| 文件 | 上传区域 | 上传 | 区域高亮+进度 |
|
|
53
|
+
| 看板卡片 | 其他列 | 移动 | 列高亮+卡片预览 |
|
|
54
|
+
| 表格列 | 其他位置 | 调整列顺序 | 列高亮 |
|
|
55
|
+
|
|
56
|
+
### 拖拽状态
|
|
57
|
+
| 状态 | 视觉表现 |
|
|
58
|
+
|------|----------|
|
|
59
|
+
| 拖拽开始 | 原位置显示占位符,鼠标显示拖拽图标 |
|
|
60
|
+
| 拖拽中 | 跟随鼠标的半透明预览 |
|
|
61
|
+
| 可放置 | 目标区域高亮 |
|
|
62
|
+
| 不可放置 | 鼠标显示禁止图标 |
|
|
63
|
+
| 拖拽结束 | 动画过渡到新位置 |
|
|
64
|
+
|
|
65
|
+
## 动画过渡 ⚠️ 必填
|
|
66
|
+
|
|
67
|
+
| 场景 | 动画类型 | 时长 | 缓动函数 |
|
|
68
|
+
|------|----------|------|----------|
|
|
69
|
+
| 页面切换 | 淡入淡出 | 300ms | ease-in-out |
|
|
70
|
+
| 弹窗打开 | 缩放+淡入 | 200ms | ease-out |
|
|
71
|
+
| 弹窗关闭 | 缩放+淡出 | 150ms | ease-in |
|
|
72
|
+
| 列表项删除 | 高度收缩+淡出 | 200ms | ease-in |
|
|
73
|
+
| 列表项添加 | 高度展开+淡入 | 200ms | ease-out |
|
|
74
|
+
| 下拉展开 | 高度展开 | 200ms | ease-out |
|
|
75
|
+
| Toast出现 | 从上滑入 | 200ms | ease-out |
|
|
76
|
+
| Toast消失 | 淡出 | 150ms | ease-in |
|
|
77
|
+
|
|
78
|
+
## 防抖节流 ⚠️ 必填
|
|
79
|
+
|
|
80
|
+
| 场景 | 策略 | 延迟时间 | 说明 |
|
|
81
|
+
|------|------|----------|------|
|
|
82
|
+
| 搜索输入 | 防抖 | 300ms | 停止输入后触发 |
|
|
83
|
+
| 窗口resize | 防抖 | 200ms | 停止调整后触发 |
|
|
84
|
+
| 滚动加载 | 节流 | 200ms | 固定间隔触发 |
|
|
85
|
+
| 按钮点击 | 节流 | 1000ms | 防止重复点击 |
|
|
86
|
+
| 表单校验 | 防抖 | 500ms | 停止输入后校验 |
|
|
87
|
+
|
|
88
|
+
## 焦点管理 ⚠️ 必填
|
|
89
|
+
|
|
90
|
+
| 场景 | 焦点行为 |
|
|
91
|
+
|------|----------|
|
|
92
|
+
| 弹窗打开 | 焦点移到弹窗内第一个可聚焦元素 |
|
|
93
|
+
| 弹窗关闭 | 焦点返回触发弹窗的元素 |
|
|
94
|
+
| 表单提交失败 | 焦点移到第一个错误字段 |
|
|
95
|
+
| 新增列表项 | 焦点移到新项的第一个输入框 |
|
|
96
|
+
| 删除列表项 | 焦点移到下一项或上一项 |
|
|
97
|
+
| 下拉框选择 | 选择后焦点保持在下拉框 |
|
|
98
|
+
|