@1aboveio/skills 0.0.0-stage → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -2
- package/bin/cli.mjs +14 -0
- package/bin/select-core.mjs +172 -0
- package/package.json +146 -4
- package/skills/app-dev/airflow/LICENSE +3 -0
- package/skills/app-dev/airflow/SKILL.md +199 -0
- package/skills/app-dev/airflow/release-check.mjs +93 -0
- package/skills/app-dev/android-foundation/LICENSE +3 -0
- package/skills/app-dev/android-foundation/SKILL.md +192 -0
- package/skills/app-dev/android-foundation/assets/android-ci-job.yml +217 -0
- package/skills/app-dev/android-foundation/references/ci.md +87 -0
- package/skills/app-dev/android-foundation/references/gotchas.md +221 -0
- package/skills/app-dev/android-foundation/references/setup.md +164 -0
- package/skills/app-dev/android-foundation/release-check.mjs +93 -0
- package/skills/app-dev/android-foundation/scripts/device-run.sh +176 -0
- package/skills/app-dev/android-foundation/scripts/device-run.test.mjs +172 -0
- package/skills/app-dev/app-debug/LICENSE +3 -0
- package/skills/app-dev/app-debug/SKILL.md +110 -0
- package/skills/app-dev/app-debug/references/common-errors.md +128 -0
- package/skills/app-dev/app-debug/release-check.mjs +93 -0
- package/skills/app-dev/better-auth/LICENSE +3 -0
- package/skills/app-dev/better-auth/SKILL.md +598 -0
- package/skills/app-dev/better-auth/references/feishu-api.md +270 -0
- package/skills/app-dev/better-auth/release-check.mjs +93 -0
- package/skills/app-dev/data-catalog/LICENSE +3 -0
- package/skills/app-dev/data-catalog/SKILL.md +204 -0
- package/skills/app-dev/data-catalog/agents/openai.yaml +3 -0
- package/skills/app-dev/data-catalog/references/data-catalog-conventions.md +75 -0
- package/skills/app-dev/data-catalog/references/field-definitions.md +116 -0
- package/skills/app-dev/data-catalog/references/format.md +121 -0
- package/skills/app-dev/data-catalog/release-check.mjs +93 -0
- package/skills/app-dev/data-catalog/scripts/data-catalog.test.mjs +36 -0
- package/skills/app-dev/data-catalog/scripts/data_catalog.py +1392 -0
- package/skills/app-dev/data-catalog/scripts/persist-conventions-core.mjs +117 -0
- package/skills/app-dev/data-catalog/scripts/persist-conventions.mjs +17 -0
- package/skills/app-dev/data-catalog/scripts/test_data_catalog.py +571 -0
- package/skills/app-dev/ios-foundation/LICENSE +3 -0
- package/skills/app-dev/ios-foundation/SKILL.md +184 -0
- package/skills/app-dev/ios-foundation/references/setup.md +243 -0
- package/skills/app-dev/ios-foundation/release-check.mjs +93 -0
- package/skills/app-dev/monorepo/LICENSE +3 -0
- package/skills/app-dev/monorepo/SKILL.md +462 -0
- package/skills/app-dev/monorepo/release-check.mjs +93 -0
- package/skills/app-dev/nextjs-fullstack/LICENSE +3 -0
- package/skills/app-dev/nextjs-fullstack/SKILL.md +211 -0
- package/skills/app-dev/nextjs-fullstack/conventions.md +318 -0
- package/skills/app-dev/nextjs-fullstack/frontend-conventions.md +61 -0
- package/skills/app-dev/nextjs-fullstack/nextjs16.md +287 -0
- package/skills/app-dev/nextjs-fullstack/release-check.mjs +93 -0
- package/skills/app-dev/nextjs-fullstack/server-actions.md +409 -0
- package/skills/app-dev/prisma-setup/LICENSE +3 -0
- package/skills/app-dev/prisma-setup/SKILL.md +181 -0
- package/skills/app-dev/prisma-setup/nextjs.md +258 -0
- package/skills/app-dev/prisma-setup/release-check.mjs +93 -0
- package/skills/app-dev/prisma-setup/turborepo.md +301 -0
- package/skills/app-dev/pyspark/LICENSE +3 -0
- package/skills/app-dev/pyspark/SKILL.md +127 -0
- package/skills/app-dev/pyspark/assets/templates/etl.py +748 -0
- package/skills/app-dev/pyspark/assets/templates/utils/__init__.py +1 -0
- package/skills/app-dev/pyspark/assets/templates/utils/hudi_metadata.py +14 -0
- package/skills/app-dev/pyspark/references/diagnosis-and-profiling.md +169 -0
- package/skills/app-dev/pyspark/references/etl-contract.md +129 -0
- package/skills/app-dev/pyspark/references/production-validation.md +131 -0
- package/skills/app-dev/pyspark/references/reconciliation.md +38 -0
- package/skills/app-dev/pyspark/references/transformation-design.md +190 -0
- package/skills/app-dev/pyspark/references/velocity-feature-calculation.md +193 -0
- package/skills/app-dev/pyspark/release-check.mjs +93 -0
- package/skills/app-dev/pyspark/scripts/spark_eventlog_summary.py +223 -0
- package/skills/app-dev/python-backend/LICENSE +3 -0
- package/skills/app-dev/python-backend/SKILL.md +325 -0
- package/skills/app-dev/python-backend/assets/uv-install.sh +48 -0
- package/skills/app-dev/python-backend/references/uv-installs.md +83 -0
- package/skills/app-dev/python-backend/release-check.mjs +93 -0
- package/skills/app-dev/shadcn/LICENSE +3 -0
- package/skills/app-dev/shadcn/SKILL.md +120 -0
- package/skills/app-dev/shadcn/assets/shadcn-small.png +0 -0
- package/skills/app-dev/shadcn/assets/shadcn.png +0 -0
- package/skills/app-dev/shadcn/cli.md +411 -0
- package/skills/app-dev/shadcn/customization.md +224 -0
- package/skills/app-dev/shadcn/mcp.md +101 -0
- package/skills/app-dev/shadcn/release-check.mjs +93 -0
- package/skills/app-dev/shadcn/rules/base-vs-radix.md +323 -0
- package/skills/app-dev/shadcn/rules/component-selection.md +67 -0
- package/skills/app-dev/shadcn/rules/composition.md +195 -0
- package/skills/app-dev/shadcn/rules/data-table.md +201 -0
- package/skills/app-dev/shadcn/rules/forms.md +255 -0
- package/skills/app-dev/shadcn/rules/icons.md +103 -0
- package/skills/app-dev/shadcn/rules/styling.md +167 -0
- package/skills/app-dev/zod-v4/LICENSE +3 -0
- package/skills/app-dev/zod-v4/SKILL.md +286 -0
- package/skills/app-dev/zod-v4/release-check.mjs +93 -0
- package/skills/cicd/cloud-build/LICENSE +3 -0
- package/skills/cicd/cloud-build/SKILL.md +707 -0
- package/skills/cicd/cloud-build/release-check.mjs +93 -0
- package/skills/cicd/cloud-debug/LICENSE +3 -0
- package/skills/cicd/cloud-debug/SKILL.md +315 -0
- package/skills/cicd/cloud-debug/references/build-failures.md +238 -0
- package/skills/cicd/cloud-debug/references/deploy-failures.md +376 -0
- package/skills/cicd/cloud-debug/references/pipeline-failures.md +378 -0
- package/skills/cicd/cloud-debug/release-check.mjs +93 -0
- package/skills/cicd/cloud-deploy/LICENSE +3 -0
- package/skills/cicd/cloud-deploy/SKILL.md +230 -0
- package/skills/cicd/cloud-deploy/references/config-templates.md +257 -0
- package/skills/cicd/cloud-deploy/release-check.mjs +93 -0
- package/skills/cicd/docker/LICENSE +3 -0
- package/skills/cicd/docker/SKILL.md +151 -0
- package/skills/cicd/docker/release-check.mjs +93 -0
- package/skills/cicd/github-actions/LICENSE +3 -0
- package/skills/cicd/github-actions/SKILL.md +111 -0
- package/skills/cicd/github-actions/references/audit-profile-optimize.md +150 -0
- package/skills/cicd/github-actions/references/ci-case-studies.md +141 -0
- package/skills/cicd/github-actions/references/conditional-ci.md +214 -0
- package/skills/cicd/github-actions/references/debugging.md +13 -0
- package/skills/cicd/github-actions/references/pipeline.md +87 -0
- package/skills/cicd/github-actions/references/post-deploy-and-publishing.md +33 -0
- package/skills/cicd/github-actions/references/runners.md +253 -0
- package/skills/cicd/github-actions/references/security.md +29 -0
- package/skills/cicd/github-actions/references/speed-and-audit.md +115 -0
- package/skills/cicd/github-actions/references/two-pass-reading.md +92 -0
- package/skills/cicd/github-actions/release-check.mjs +93 -0
- package/skills/cicd/github-actions/scripts/ci-run-audit-core.mjs +612 -0
- package/skills/cicd/github-actions/scripts/ci-run-audit.mjs +4 -0
- package/skills/cicd/github-actions/scripts/ci-run-audit.test.mjs +637 -0
- package/skills/cicd/github-flow/LICENSE +3 -0
- package/skills/cicd/github-flow/SKILL.md +123 -0
- package/skills/cicd/github-flow/references/ci-conventions.md +14 -0
- package/skills/cicd/github-flow/release-check.mjs +93 -0
- package/skills/cicd/github-flow/scripts/flow-core.mjs +105 -0
- package/skills/cicd/github-flow/scripts/flow.mjs +81 -0
- package/skills/cicd/github-flow/scripts/flow.test.mjs +114 -0
- package/skills/cicd/github-flow/scripts/persist-conventions-core.mjs +117 -0
- package/skills/cicd/github-flow/scripts/persist-conventions.mjs +49 -0
- package/skills/cicd/github-flow/scripts/persist-conventions.test.mjs +108 -0
- package/skills/cicd/google-cloud/LICENSE +3 -0
- package/skills/cicd/google-cloud/SKILL.md +119 -0
- package/skills/cicd/google-cloud/references/gcs.md +469 -0
- package/skills/cicd/google-cloud/references/iam.md +451 -0
- package/skills/cicd/google-cloud/references/project.md +349 -0
- package/skills/cicd/google-cloud/references/secrets.md +336 -0
- package/skills/cicd/google-cloud/references/vpc.md +312 -0
- package/skills/cicd/google-cloud/release-check.mjs +93 -0
- package/skills/cicd/google-cloud/scripts/create-sa.sh +36 -0
- package/skills/cicd/google-cloud/scripts/gcp-config.sh +31 -0
- package/skills/cicd/google-cloud/scripts/grant-iap.sh +41 -0
- package/skills/cicd/google-cloud/scripts/setup-secrets.sh +48 -0
- package/skills/cicd/mergify/LICENSE +3 -0
- package/skills/cicd/mergify/SKILL.md +102 -0
- package/skills/cicd/mergify/assets/templates/mergify.yml +215 -0
- package/skills/cicd/mergify/assets/templates/ruleset.json +46 -0
- package/skills/cicd/mergify/references/branch-protection.md +282 -0
- package/skills/cicd/mergify/references/configuration.md +274 -0
- package/skills/cicd/mergify/references/diagnosis.md +109 -0
- package/skills/cicd/mergify/references/stacks.md +84 -0
- package/skills/cicd/mergify/references/traps.md +119 -0
- package/skills/cicd/mergify/references/watch-contract.md +274 -0
- package/skills/cicd/mergify/release-check.mjs +93 -0
- package/skills/cicd/mergify/scripts/audit-core.mjs +208 -0
- package/skills/cicd/mergify/scripts/audit.mjs +4 -0
- package/skills/cicd/mergify/scripts/audit.test.mjs +201 -0
- package/skills/cicd/mergify/scripts/entrypoints.test.mjs +106 -0
- package/skills/cicd/mergify/scripts/pr-620-mergify-comments.fixture.json +30 -0
- package/skills/cicd/mergify/scripts/stack-push-core.mjs +258 -0
- package/skills/cicd/mergify/scripts/stack-push.mjs +4 -0
- package/skills/cicd/mergify/scripts/stack-push.test.mjs +233 -0
- package/skills/cicd/mergify/scripts/watch-pr-delivery-core.mjs +1065 -0
- package/skills/cicd/mergify/scripts/watch-pr-delivery.mjs +4 -0
- package/skills/cicd/mergify/scripts/watch-pr-delivery.test.mjs +1826 -0
- package/skills/cicd/podman/LICENSE +3 -0
- package/skills/cicd/podman/SKILL.md +71 -0
- package/skills/cicd/podman/agents/openai.yaml +4 -0
- package/skills/cicd/podman/assets/templates/podman-compose-socket-directory.yml +6 -0
- package/skills/cicd/podman/assets/templates/podman-service-override.conf +3 -0
- package/skills/cicd/podman/references/compose-compatibility.md +70 -0
- package/skills/cicd/podman/references/networking-and-ports.md +74 -0
- package/skills/cicd/podman/references/rootless-services-and-sockets.md +156 -0
- package/skills/cicd/podman/references/troubleshooting.md +98 -0
- package/skills/cicd/podman/release-check.mjs +93 -0
- package/skills/content/article-review/LICENSE +3 -0
- package/skills/content/article-review/SKILL.md +66 -0
- package/skills/content/article-review/references/report-format.md +68 -0
- package/skills/content/article-review/references/template-guide.md +79 -0
- package/skills/content/article-review/references/template-wechat-payments.md +125 -0
- package/skills/content/article-review/release-check.mjs +93 -0
- package/skills/content/article-to-image/LICENSE +3 -0
- package/skills/content/article-to-image/SKILL.md +91 -0
- package/skills/content/article-to-image/references/formats.md +53 -0
- package/skills/content/article-to-image/release-check.mjs +93 -0
- package/skills/content/flowchart-svg/LICENSE +3 -0
- package/skills/content/flowchart-svg/SKILL.md +43 -0
- package/skills/content/flowchart-svg/release-check.mjs +93 -0
- package/skills/content/flowchart-svg/scripts/export_png.sh +8 -0
- package/skills/content/image-gen/LICENSE +3 -0
- package/skills/content/image-gen/SKILL.md +192 -0
- package/skills/content/image-gen/release-check.mjs +93 -0
- package/skills/content/image-gen/scripts/credentials.mjs +217 -0
- package/skills/content/image-gen/scripts/credentials.test.mjs +212 -0
- package/skills/content/image-gen/scripts/generate.mjs +240 -0
- package/skills/content/image-gen/scripts/options.mjs +293 -0
- package/skills/content/image-gen/scripts/options.test.mjs +245 -0
- package/skills/content/mermaid/LICENSE +3 -0
- package/skills/content/mermaid/SKILL.md +635 -0
- package/skills/content/mermaid/release-check.mjs +93 -0
- package/skills/content/wechat-article-writer/LICENSE +3 -0
- package/skills/content/wechat-article-writer/SKILL.md +92 -0
- package/skills/content/wechat-article-writer/references/style-selector.md +133 -0
- package/skills/content/wechat-article-writer/references/writing-rules.md +152 -0
- package/skills/content/wechat-article-writer/release-check.mjs +93 -0
- package/skills/content/wechat-article-writer/templates/wechat-comparison.md +52 -0
- package/skills/content/wechat-article-writer/templates/wechat-howto.md +51 -0
- package/skills/content/wechat-article-writer/templates/wechat-insight.md +50 -0
- package/skills/content/wechat-article-writer/templates/wechat-pitfall.md +52 -0
- package/skills/content/wechat-publisher/LICENSE +3 -0
- package/skills/content/wechat-publisher/SKILL.md +171 -0
- package/skills/content/wechat-publisher/references/api.md +105 -0
- package/skills/content/wechat-publisher/references/layout-rules.md +57 -0
- package/skills/content/wechat-publisher/references/wechat-safe-template.html +86 -0
- package/skills/content/wechat-publisher/release-check.mjs +93 -0
- package/skills/content/wechat-publisher/scripts/md_to_wechat_html.py +194 -0
- package/skills/content/wechat-publisher/scripts/publish.py +239 -0
- package/skills/content/wechat-search/LICENSE +3 -0
- package/skills/content/wechat-search/SKILL.md +211 -0
- package/skills/content/wechat-search/release-check.mjs +93 -0
- package/skills/content/wechat-search/scripts/start-chrome.sh +83 -0
- package/skills/content/xai-search/LICENSE +3 -0
- package/skills/content/xai-search/SKILL.md +79 -0
- package/skills/content/xai-search/release-check.mjs +93 -0
- package/skills/content/xai-search/scripts/xai_search.sh +187 -0
- package/skills/content/xai-search/tests/smoke_test.sh +36 -0
- package/skills/core/distill-writing/LICENSE +3 -0
- package/skills/core/distill-writing/SKILL.md +74 -0
- package/skills/core/distill-writing/references/extraction.md +95 -0
- package/skills/core/distill-writing/references/updating.md +46 -0
- package/skills/core/distill-writing/release-check.mjs +93 -0
- package/skills/core/doc-to-md/LICENSE +3 -0
- package/skills/core/doc-to-md/SKILL.md +78 -0
- package/skills/core/doc-to-md/release-check.mjs +93 -0
- package/skills/core/doc-to-md/scripts/convert.py +157 -0
- package/skills/core/editorial-review/LICENSE +3 -0
- package/skills/core/editorial-review/SKILL.md +79 -0
- package/skills/core/editorial-review/references/checklist.md +94 -0
- package/skills/core/editorial-review/release-check.mjs +93 -0
- package/skills/core/house-style/LICENSE +3 -0
- package/skills/core/house-style/SKILL.md +33 -0
- package/skills/core/house-style/references/defaults.md +66 -0
- package/skills/core/house-style/references/rules.md +267 -0
- package/skills/core/house-style/references/sources.md +27 -0
- package/skills/core/house-style/references/style-en.md +131 -0
- package/skills/core/house-style/references/style-zh.md +141 -0
- package/skills/core/house-style/references/terminology-zh.md +223 -0
- package/skills/core/house-style/release-check.mjs +93 -0
- package/skills/core/house-style/templates/brd.md +103 -0
- package/skills/core/house-style/templates/commercial-proposal.md +93 -0
- package/skills/core/house-style/templates/compliance-policy.md +109 -0
- package/skills/core/house-style/templates/gap-analysis.md +105 -0
- package/skills/core/house-style/templates/general.md +63 -0
- package/skills/core/house-style/templates/integration-guide.md +98 -0
- package/skills/core/house-style/templates/prd.md +81 -0
- package/skills/core/house-style/templates/risk-operations-procedure.md +94 -0
- package/skills/core/house-style/templates/technical-spec.md +96 -0
- package/skills/core/polish-cn/LICENSE +3 -0
- package/skills/core/polish-cn/SKILL.md +102 -0
- package/skills/core/polish-cn/references/brief.md +93 -0
- package/skills/core/polish-cn/references/models.md +76 -0
- package/skills/core/polish-cn/release-check.mjs +93 -0
- package/skills/core/polish-cn/scripts/polish-cn.test.mjs +244 -0
- package/skills/core/polish-cn/scripts/polish_blocks.py +489 -0
- package/skills/core/reg-parser/LICENSE +3 -0
- package/skills/core/reg-parser/SKILL.md +212 -0
- package/skills/core/reg-parser/references/checklist-schema.md +223 -0
- package/skills/core/reg-parser/references/checklists/hk-amlo-checklist.json +1306 -0
- package/skills/core/reg-parser/references/checklists/hk-amlo-checklist.md +469 -0
- package/skills/core/reg-parser/references/checklists/hk-fi-corporate-onboarding-cdd-checklist.json +634 -0
- package/skills/core/reg-parser/references/checklists/hk-fi-corporate-onboarding-cdd-checklist.md +233 -0
- package/skills/core/reg-parser/references/checklists/hk-mso-guideline-checklist.json +2194 -0
- package/skills/core/reg-parser/references/checklists/hk-mso-guideline-checklist.md +771 -0
- package/skills/core/reg-parser/references/checklists/kyc-aml-checklist.md +258 -0
- package/skills/core/reg-parser/references/checklists/visa-vars-checklist.md +1058 -0
- package/skills/core/reg-parser/references/mandates/hk-amlo-cap615.md +389 -0
- package/skills/core/reg-parser/references/mandates/visa-vars.md +205 -0
- package/skills/core/reg-parser/release-check.mjs +93 -0
- package/skills/core/reg-parser/scripts/compare_checklist.py +230 -0
- package/skills/core/reg-parser/scripts/dump_checklist.py +361 -0
- package/skills/core/reg-parser/scripts/preprocess-mandate.sh +187 -0
- package/skills/core/reg-parser/scripts/reg-parser.test.mjs +165 -0
- package/skills/core/reg-parser/scripts/test_quarantine.sh +105 -0
- package/skills/core/reg-parser/scripts/validate_checklist.py +563 -0
- package/skills/core/reg-parser/scripts/validate_mandate.py +273 -0
- package/skills/core/terminology/LICENSE +3 -0
- package/skills/core/terminology/SKILL.md +62 -0
- package/skills/core/terminology/references/format.md +50 -0
- package/skills/core/terminology/references/init.md +32 -0
- package/skills/core/terminology/release-check.mjs +93 -0
- package/skills/core/write-doc/LICENSE +3 -0
- package/skills/core/write-doc/SKILL.md +141 -0
- package/skills/core/write-doc/references/bilingual.md +60 -0
- package/skills/core/write-doc/release-check.mjs +93 -0
- package/skills/engineering/better-review/LICENSE +3 -0
- package/skills/engineering/better-review/SKILL.md +249 -0
- package/skills/engineering/better-review/agents/openai.yaml +9 -0
- package/skills/engineering/better-review/references/domain-hazards.md +53 -0
- package/skills/engineering/better-review/references/passes.md +147 -0
- package/skills/engineering/better-review/references/result.md +151 -0
- package/skills/engineering/better-review/release-check.mjs +93 -0
- package/skills/engineering/better-review/scripts/pr-context.mjs +212 -0
- package/skills/engineering/better-review/scripts/pr-context.test.mjs +168 -0
- package/skills/engineering/better-review/scripts/rereview-scope.mjs +503 -0
- package/skills/engineering/better-review/scripts/rereview-scope.test.mjs +587 -0
- package/skills/engineering/better-review/scripts/scan-diff.mjs +365 -0
- package/skills/engineering/better-review/scripts/scan-diff.test.mjs +414 -0
- package/skills/engineering/better-review/scripts/vendor-sync.test.mjs +96 -0
- package/skills/engineering/e2e-test/LICENSE +3 -0
- package/skills/engineering/e2e-test/SKILL.md +98 -0
- package/skills/engineering/e2e-test/assets/ci-gates.cloudbuild.yaml +24 -0
- package/skills/engineering/e2e-test/references/authoring/auth-flows.md +159 -0
- package/skills/engineering/e2e-test/references/authoring/playwright-config.md +73 -0
- package/skills/engineering/e2e-test/references/authoring/playwright-patterns.md +144 -0
- package/skills/engineering/e2e-test/references/ci-integration.md +25 -0
- package/skills/engineering/e2e-test/references/ci-playwright-container.md +290 -0
- package/skills/engineering/e2e-test/references/presentation-sweep.md +104 -0
- package/skills/engineering/e2e-test/references/reviewing.md +41 -0
- package/skills/engineering/e2e-test/references/route-manifest.md +51 -0
- package/skills/engineering/e2e-test/release-check.mjs +93 -0
- package/skills/engineering/e2e-test/scripts/detect-routes-nextjs.mjs +200 -0
- package/skills/engineering/e2e-test/scripts/presentation-checks.mjs +171 -0
- package/skills/engineering/e2e-test/scripts/presentation-checks.test.mjs +106 -0
- package/skills/engineering/e2e-test/scripts/presentation-perceivability.mjs +179 -0
- package/skills/engineering/e2e-test/scripts/presentation-perceivability.test.mjs +117 -0
- package/skills/engineering/e2e-test/scripts/presentation-reachability.mjs +154 -0
- package/skills/engineering/e2e-test/scripts/presentation-reachability.test.mjs +69 -0
- package/skills/engineering/e2e-test/scripts/presentation-render-health.mjs +141 -0
- package/skills/engineering/e2e-test/scripts/presentation-render-health.test.mjs +98 -0
- package/skills/engineering/e2e-test/scripts/presentation-sweep.mjs +147 -0
- package/skills/engineering/e2e-test/scripts/presentation-sweep.test.mjs +71 -0
- package/skills/engineering/e2e-test/scripts/presentation-temporal.mjs +127 -0
- package/skills/engineering/e2e-test/scripts/presentation-temporal.test.mjs +59 -0
- package/skills/engineering/e2e-test/scripts/project-route-manifest.mjs +82 -0
- package/skills/engineering/e2e-test/scripts/project-route-manifest.test.mjs +76 -0
- package/skills/engineering/e2e-test/scripts/validate-manifest.mjs +106 -0
- package/skills/engineering/engineering-runtime/LICENSE +3 -0
- package/skills/engineering/engineering-runtime/SKILL.md +11 -0
- package/skills/engineering/engineering-runtime/agents/openai.yaml +6 -0
- package/skills/engineering/engineering-runtime/coherence/workflow.json +597 -0
- package/skills/engineering/engineering-runtime/engineering-runtime.test.mjs +68 -0
- package/skills/engineering/engineering-runtime/release-check.mjs +93 -0
- package/skills/engineering/engineering-runtime/scripts/exact-head-artifact.mjs +131 -0
- package/skills/engineering/engineering-runtime/scripts/head-check-set.mjs +398 -0
- package/skills/engineering/engineering-runtime/scripts/invocation-policy.mjs +187 -0
- package/skills/engineering/engineering-runtime/scripts/invocation-policy.test.mjs +95 -0
- package/skills/engineering/engineering-runtime/scripts/main-module.mjs +79 -0
- package/skills/engineering/engineering-runtime/scripts/main-module.test.mjs +288 -0
- package/skills/engineering/engineering-runtime/scripts/mergify-yaml.mjs +11 -0
- package/skills/engineering/engineering-runtime/scripts/package-lock.json +43 -0
- package/skills/engineering/engineering-runtime/scripts/package.json +10 -0
- package/skills/engineering/engineering-runtime/scripts/required-check-plan.mjs +223 -0
- package/skills/engineering/engineering-runtime/scripts/required-check-plan.test.mjs +96 -0
- package/skills/engineering/engineering-runtime/scripts/review-completion.mjs +56 -0
- package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +595 -0
- package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +189 -0
- package/skills/engineering/engineering-runtime/scripts/yaml-mapping.mjs +18 -0
- package/skills/engineering/ensure-coverage/LICENSE +3 -0
- package/skills/engineering/ensure-coverage/SKILL.md +129 -0
- package/skills/engineering/ensure-coverage/references/breadth/coverage-ledger.md +92 -0
- package/skills/engineering/ensure-coverage/references/breadth/inventory-contract.md +85 -0
- package/skills/engineering/ensure-coverage/references/breadth/surface-baseline.md +44 -0
- package/skills/engineering/ensure-coverage/references/breadth/surface-discovery.md +16 -0
- package/skills/engineering/ensure-coverage/references/depth/characterization.md +68 -0
- package/skills/engineering/ensure-coverage/references/depth/coverage.config.example.json +19 -0
- package/skills/engineering/ensure-coverage/references/depth/grading.md +35 -0
- package/skills/engineering/ensure-coverage/references/depth/mock-policy.md +57 -0
- package/skills/engineering/ensure-coverage/references/depth/test-smells.md +39 -0
- package/skills/engineering/ensure-coverage/references/enforcement/ci-contract.md +44 -0
- package/skills/engineering/ensure-coverage/references/examples/coverage-ledger.md +110 -0
- package/skills/engineering/ensure-coverage/references/examples/refund-flow.md +35 -0
- package/skills/engineering/ensure-coverage/references/presentation/axis.md +64 -0
- package/skills/engineering/ensure-coverage/references/process/audit-mode.md +27 -0
- package/skills/engineering/ensure-coverage/references/process/output-template.md +139 -0
- package/skills/engineering/ensure-coverage/references/process/test-strategy.md +56 -0
- package/skills/engineering/ensure-coverage/release-check.mjs +93 -0
- package/skills/engineering/ensure-coverage/schemas/coverage-config.schema.json +67 -0
- package/skills/engineering/ensure-coverage/schemas/coverage-file.schema.json +140 -0
- package/skills/engineering/ensure-coverage/scripts/README.md +99 -0
- package/skills/engineering/ensure-coverage/scripts/adapters/nextjs-inventory.mjs +182 -0
- package/skills/engineering/ensure-coverage/scripts/adapters/nextjs-inventory.test.mjs +96 -0
- package/skills/engineering/ensure-coverage/scripts/check-quarantine-expiry.mjs +105 -0
- package/skills/engineering/ensure-coverage/scripts/check-quarantine-expiry.test.mjs +47 -0
- package/skills/engineering/ensure-coverage/scripts/ci-audit.mjs +137 -0
- package/skills/engineering/ensure-coverage/scripts/ci-audit.test.mjs +86 -0
- package/skills/engineering/ensure-coverage/scripts/coverage-ledger.mjs +674 -0
- package/skills/engineering/ensure-coverage/scripts/coverage-ledger.test.mjs +447 -0
- package/skills/engineering/ensure-coverage/scripts/design-parity.mjs +591 -0
- package/skills/engineering/ensure-coverage/scripts/design-parity.test.mjs +552 -0
- package/skills/engineering/ensure-coverage/scripts/lint-tests.mjs +282 -0
- package/skills/engineering/ensure-coverage/scripts/lint-tests.test.mjs +289 -0
- package/skills/engineering/ensure-coverage/scripts/mock-policy-config.mjs +176 -0
- package/skills/engineering/ensure-coverage/scripts/mock-policy-config.test.mjs +119 -0
- package/skills/engineering/ensure-coverage/scripts/package.json +19 -0
- package/skills/engineering/golden-path/LICENSE +3 -0
- package/skills/engineering/golden-path/SKILL.md +230 -0
- package/skills/engineering/golden-path/agents/openai.yaml +3 -0
- package/skills/engineering/golden-path/assets/golden-paths.example.json +57 -0
- package/skills/engineering/golden-path/references/contract.md +239 -0
- package/skills/engineering/golden-path/references/migration.md +111 -0
- package/skills/engineering/golden-path/release-check.mjs +93 -0
- package/skills/engineering/golden-path/scripts/golden-path-core.mjs +1779 -0
- package/skills/engineering/golden-path/scripts/golden-path.mjs +6 -0
- package/skills/engineering/golden-path/scripts/golden-path.test.mjs +1457 -0
- package/skills/engineering/harness-runtime/LICENSE +3 -0
- package/skills/engineering/harness-runtime/SKILL.md +19 -0
- package/skills/engineering/harness-runtime/agents/openai.yaml +6 -0
- package/skills/engineering/harness-runtime/bin/discover-models.mjs +4 -0
- package/skills/engineering/harness-runtime/bin/model-catalog.mjs +4 -0
- package/skills/engineering/harness-runtime/contracts.md +15 -0
- package/skills/engineering/harness-runtime/discover-models.mjs +392 -0
- package/skills/engineering/harness-runtime/discover-models.test.mjs +363 -0
- package/skills/engineering/harness-runtime/fixtures/native-question-schemas.json +33 -0
- package/skills/engineering/harness-runtime/fixtures/question-responses.json +54 -0
- package/skills/engineering/harness-runtime/harness-runtime.test.mjs +967 -0
- package/skills/engineering/harness-runtime/index.mjs +767 -0
- package/skills/engineering/harness-runtime/model-catalog-seed.test.mjs +829 -0
- package/skills/engineering/harness-runtime/model-catalog.mjs +787 -0
- package/skills/engineering/harness-runtime/model-catalog.test.mjs +366 -0
- package/skills/engineering/harness-runtime/native-question-contracts.md +37 -0
- package/skills/engineering/harness-runtime/references/model-catalog-seed.json +408 -0
- package/skills/engineering/harness-runtime/references/model-catalog.md +57 -0
- package/skills/engineering/harness-runtime/release-check.mjs +93 -0
- package/skills/engineering/resolve-issues/LICENSE +3 -0
- package/skills/engineering/resolve-issues/SKILL.md +250 -0
- package/skills/engineering/resolve-issues/agents/openai.yaml +9 -0
- package/skills/engineering/resolve-issues/plugin-hooks.json +17 -0
- package/skills/engineering/resolve-issues/references/canary.md +28 -0
- package/skills/engineering/resolve-issues/references/ci.md +105 -0
- package/skills/engineering/resolve-issues/references/done.md +25 -0
- package/skills/engineering/resolve-issues/references/dropbox.md +90 -0
- package/skills/engineering/resolve-issues/references/expire.md +318 -0
- package/skills/engineering/resolve-issues/references/exploration.md +202 -0
- package/skills/engineering/resolve-issues/references/implementation.md +303 -0
- package/skills/engineering/resolve-issues/references/preflight.md +445 -0
- package/skills/engineering/resolve-issues/references/review.md +228 -0
- package/skills/engineering/resolve-issues/references/shared-modules.md +44 -0
- package/skills/engineering/resolve-issues/references/task-plan.md +264 -0
- package/skills/engineering/resolve-issues/release-check.mjs +93 -0
- package/skills/engineering/resolve-issues/scripts/cleanup-runs.mjs +364 -0
- package/skills/engineering/resolve-issues/scripts/cleanup-runs.test.mjs +280 -0
- package/skills/engineering/resolve-issues/scripts/discover-models.mjs +9 -0
- package/skills/engineering/resolve-issues/scripts/dropbox.mjs +473 -0
- package/skills/engineering/resolve-issues/scripts/dropbox.test.mjs +346 -0
- package/skills/engineering/resolve-issues/scripts/findings-reuse.mjs +98 -0
- package/skills/engineering/resolve-issues/scripts/findings-reuse.test.mjs +88 -0
- package/skills/engineering/resolve-issues/scripts/github-reviews.mjs +384 -0
- package/skills/engineering/resolve-issues/scripts/github-reviews.test.mjs +264 -0
- package/skills/engineering/resolve-issues/scripts/install-hooks.mjs +135 -0
- package/skills/engineering/resolve-issues/scripts/install-hooks.test.mjs +79 -0
- package/skills/engineering/resolve-issues/scripts/issue-tree.mjs +162 -0
- package/skills/engineering/resolve-issues/scripts/issue-tree.test.mjs +107 -0
- package/skills/engineering/resolve-issues/scripts/manual-invocation.test.mjs +14 -0
- package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +9 -0
- package/skills/engineering/resolve-issues/scripts/next-actions-capacity.test.mjs +149 -0
- package/skills/engineering/resolve-issues/scripts/next-actions.mjs +856 -0
- package/skills/engineering/resolve-issues/scripts/next-actions.test.mjs +915 -0
- package/skills/engineering/resolve-issues/scripts/plan-sync.mjs +269 -0
- package/skills/engineering/resolve-issues/scripts/plan-sync.test.mjs +156 -0
- package/skills/engineering/resolve-issues/scripts/preflight-models.mjs +736 -0
- package/skills/engineering/resolve-issues/scripts/preflight-models.test.mjs +448 -0
- package/skills/engineering/resolve-issues/scripts/ready-check.mjs +185 -0
- package/skills/engineering/resolve-issues/scripts/ready-check.test.mjs +217 -0
- package/skills/engineering/resolve-issues/scripts/rehydrate.mjs +98 -0
- package/skills/engineering/resolve-issues/scripts/rehydrate.test.mjs +91 -0
- package/skills/engineering/resolve-issues/scripts/review-verdict.mjs +509 -0
- package/skills/engineering/resolve-issues/scripts/review-verdict.test.mjs +1060 -0
- package/skills/engineering/resolve-issues/scripts/size-check.mjs +492 -0
- package/skills/engineering/resolve-issues/scripts/size-check.test.mjs +458 -0
- package/skills/engineering/resolve-release/LICENSE +3 -0
- package/skills/engineering/resolve-release/SKILL.md +215 -0
- package/skills/engineering/resolve-release/agents/openai.yaml +8 -0
- package/skills/engineering/resolve-release/flows/cloud-run-canary.md +13 -0
- package/skills/engineering/resolve-release/flows/cloud-run.md +7 -0
- package/skills/engineering/resolve-release/flows/root-tag-npm.md +13 -0
- package/skills/engineering/resolve-release/flows/workspace-npm.md +22 -0
- package/skills/engineering/resolve-release/references/canary.md +51 -0
- package/skills/engineering/resolve-release/references/candidate.md +41 -0
- package/skills/engineering/resolve-release/references/cut.md +131 -0
- package/skills/engineering/resolve-release/references/dark-launch.md +66 -0
- package/skills/engineering/resolve-release/references/flows.md +150 -0
- package/skills/engineering/resolve-release/references/preflight.md +154 -0
- package/skills/engineering/resolve-release/references/prepared-metadata.md +260 -0
- package/skills/engineering/resolve-release/references/promotion.md +82 -0
- package/skills/engineering/resolve-release/references/publish.md +232 -0
- package/skills/engineering/resolve-release/references/workspace-npm.md +103 -0
- package/skills/engineering/resolve-release/release-check.mjs +93 -0
- package/skills/engineering/resolve-release/scripts/apply.mjs +212 -0
- package/skills/engineering/resolve-release/scripts/apply.test.mjs +99 -0
- package/skills/engineering/resolve-release/scripts/dark-flags.mjs +134 -0
- package/skills/engineering/resolve-release/scripts/dark-flags.test.mjs +100 -0
- package/skills/engineering/resolve-release/scripts/flow.mjs +500 -0
- package/skills/engineering/resolve-release/scripts/flow.test.mjs +340 -0
- package/skills/engineering/resolve-release/scripts/green-head.mjs +231 -0
- package/skills/engineering/resolve-release/scripts/green-head.test.mjs +101 -0
- package/skills/engineering/resolve-release/scripts/npm-version-absence.mjs +138 -0
- package/skills/engineering/resolve-release/scripts/npm-version-absence.test.mjs +426 -0
- package/skills/engineering/resolve-release/scripts/plan-npm.test.mjs +659 -0
- package/skills/engineering/resolve-release/scripts/plan-toml-boundary.test.mjs +317 -0
- package/skills/engineering/resolve-release/scripts/plan-uv.test.mjs +291 -0
- package/skills/engineering/resolve-release/scripts/plan.mjs +806 -0
- package/skills/engineering/resolve-release/scripts/plan.test.mjs +428 -0
- package/skills/engineering/rush-issues/LICENSE +3 -0
- package/skills/engineering/rush-issues/SKILL.md +58 -0
- package/skills/engineering/rush-issues/agents/openai.yaml +8 -0
- package/skills/engineering/rush-issues/rehydrate.mjs +10 -0
- package/skills/engineering/rush-issues/release-check.mjs +93 -0
- package/skills/engineering/rush-release/LICENSE +3 -0
- package/skills/engineering/rush-release/SKILL.md +35 -0
- package/skills/engineering/rush-release/agents/openai.yaml +8 -0
- package/skills/engineering/rush-release/release-check.mjs +93 -0
- package/skills/engineering/test-quality/LICENSE +3 -0
- package/skills/engineering/test-quality/SKILL.md +79 -0
- package/skills/engineering/test-quality/references/audit.md +80 -0
- package/skills/engineering/test-quality/references/lint.md +24 -0
- package/skills/engineering/test-quality/references/principles.md +143 -0
- package/skills/engineering/test-quality/references/testing-conventions.md +9 -0
- package/skills/engineering/test-quality/release-check.mjs +93 -0
- package/skills/engineering/test-quality/scripts/lint-tests.mjs +574 -0
- package/skills/engineering/test-quality/scripts/lint-tests.test.mjs +591 -0
- package/skills/engineering/test-quality/scripts/mock-policy-config.mjs +176 -0
- package/skills/engineering/test-quality/scripts/mock-policy-config.test.mjs +119 -0
- package/skills/engineering/test-quality/scripts/persist-conventions-core.mjs +117 -0
- package/skills/engineering/test-quality/scripts/persist-conventions.mjs +17 -0
- package/skills/engineering/test-quality/scripts/persist-conventions.test.mjs +104 -0
- package/skills/risk-compliance/compliance-audit/LICENSE +3 -0
- package/skills/risk-compliance/compliance-audit/SKILL.md +439 -0
- package/skills/risk-compliance/compliance-audit/references/findings-schema.md +293 -0
- package/skills/risk-compliance/compliance-audit/references/normalization-rules.md +45 -0
- package/skills/risk-compliance/compliance-audit/references/vars-checklist.md +1068 -0
- package/skills/risk-compliance/compliance-audit/references/vars-findings-schema.md +398 -0
- package/skills/risk-compliance/compliance-audit/release-check.mjs +93 -0
- package/skills/risk-compliance/compliance-audit/scripts/compliance-audit.test.mjs +14 -0
- package/skills/risk-compliance/compliance-audit/scripts/export_tracker_xlsx.py +221 -0
- package/skills/risk-compliance/compliance-audit/scripts/reconcile_tracker.py +458 -0
- package/skills/risk-compliance/compliance-audit/scripts/test_export_tracker_xlsx.py +97 -0
- package/skills/risk-compliance/compliance-audit/scripts/test_validate_tracker.py +157 -0
- package/skills/risk-compliance/compliance-audit/scripts/validate_tracker.py +829 -0
- package/skills/risk-compliance/contract-compare/LICENSE +3 -0
- package/skills/risk-compliance/contract-compare/SKILL.md +199 -0
- package/skills/risk-compliance/contract-compare/references/comparison-dimensions.md +209 -0
- package/skills/risk-compliance/contract-compare/release-check.mjs +93 -0
- package/skills/risk-compliance/contract-review/LICENSE +3 -0
- package/skills/risk-compliance/contract-review/SKILL.md +240 -0
- package/skills/risk-compliance/contract-review/references/review-criteria.md +223 -0
- package/skills/risk-compliance/contract-review/release-check.mjs +93 -0
- package/skills/risk-compliance/doc-authenticity/LICENSE +3 -0
- package/skills/risk-compliance/doc-authenticity/SKILL.md +160 -0
- package/skills/risk-compliance/doc-authenticity/agents/openai.yaml +8 -0
- package/skills/risk-compliance/doc-authenticity/manual-invocation.test.mjs +12 -0
- package/skills/risk-compliance/doc-authenticity/references/agreement.md +66 -0
- package/skills/risk-compliance/doc-authenticity/references/bank-statement.md +150 -0
- package/skills/risk-compliance/doc-authenticity/references/forensic-signals.md +157 -0
- package/skills/risk-compliance/doc-authenticity/references/image-signals.md +114 -0
- package/skills/risk-compliance/doc-authenticity/references/invoice.md +66 -0
- package/skills/risk-compliance/doc-authenticity/references/issuer-profiles.md +86 -0
- package/skills/risk-compliance/doc-authenticity/references/verdict-and-report.md +95 -0
- package/skills/risk-compliance/doc-authenticity/references/verdict.schema.json +81 -0
- package/skills/risk-compliance/doc-authenticity/release-check.mjs +93 -0
- package/skills/risk-compliance/doc-authenticity/scripts/image_forensics.py +294 -0
- package/skills/risk-compliance/doc-authenticity/scripts/pdf_forensics.py +401 -0
- package/skills/risk-compliance/doc-authenticity/scripts/validate_codes.py +224 -0
- package/skills/risk-compliance/doc-authenticity/scripts/validate_verdict.py +308 -0
- package/skills/risk-compliance/doc-authenticity/scripts/validate_verdict.test.mjs +212 -0
- package/skills/risk-compliance/fraud-analysis/LICENSE +3 -0
- package/skills/risk-compliance/fraud-analysis/SKILL.md +114 -0
- package/skills/risk-compliance/fraud-analysis/references/archetypes/authorized-payment-scam.md +41 -0
- package/skills/risk-compliance/fraud-analysis/references/archetypes/first-party-fraud.md +44 -0
- package/skills/risk-compliance/fraud-analysis/references/archetypes/third-party-fraud.md +27 -0
- package/skills/risk-compliance/fraud-analysis/references/contexts/bank-transfer.md +24 -0
- package/skills/risk-compliance/fraud-analysis/references/contexts/card-payment.md +30 -0
- package/skills/risk-compliance/fraud-analysis/references/contexts/payment-collection.md +20 -0
- package/skills/risk-compliance/fraud-analysis/references/contexts/payout.md +20 -0
- package/skills/risk-compliance/fraud-analysis/references/feature-engineering.md +158 -0
- package/skills/risk-compliance/fraud-analysis/references/mechanisms/account-takeover.md +36 -0
- package/skills/risk-compliance/fraud-analysis/references/report-rationale.md +45 -0
- package/skills/risk-compliance/fraud-analysis/references/report-template.md +190 -0
- package/skills/risk-compliance/fraud-analysis/references/review-checklist.md +175 -0
- package/skills/risk-compliance/fraud-analysis/references/taxonomy.md +79 -0
- package/skills/risk-compliance/fraud-analysis/references/terminology.md +108 -0
- package/skills/risk-compliance/fraud-analysis/references/workflow.md +175 -0
- package/skills/risk-compliance/fraud-analysis/release-check.mjs +93 -0
- package/skills/risk-compliance/payment-analysis/LICENSE +3 -0
- package/skills/risk-compliance/payment-analysis/SKILL.md +180 -0
- package/skills/risk-compliance/payment-analysis/references/auth-rate-actions.md +30 -0
- package/skills/risk-compliance/payment-analysis/references/chargebacks.md +208 -0
- package/skills/risk-compliance/payment-analysis/references/chinese-polish.md +51 -0
- package/skills/risk-compliance/payment-analysis/references/event-layers.md +127 -0
- package/skills/risk-compliance/payment-analysis/references/fx.md +59 -0
- package/skills/risk-compliance/payment-analysis/references/journey.md +79 -0
- package/skills/risk-compliance/payment-analysis/references/metrics.md +67 -0
- package/skills/risk-compliance/payment-analysis/references/report-template.md +119 -0
- package/skills/risk-compliance/payment-analysis/references/terminology.md +95 -0
- package/skills/risk-compliance/payment-analysis/references/visualization.md +56 -0
- package/skills/risk-compliance/payment-analysis/release-check.mjs +93 -0
- package/skills/risk-compliance/report-writing/LICENSE +3 -0
- package/skills/risk-compliance/report-writing/SKILL.md +220 -0
- package/skills/risk-compliance/report-writing/references/audit-report-template.md +121 -0
- package/skills/risk-compliance/report-writing/references/external-assessment-template.md +167 -0
- package/skills/risk-compliance/report-writing/references/management-report-template.md +145 -0
- package/skills/risk-compliance/report-writing/references/vars-report-template.md +224 -0
- package/skills/risk-compliance/report-writing/release-check.mjs +93 -0
- package/skills/risk-compliance/similar-domain/LICENSE +3 -0
- package/skills/risk-compliance/similar-domain/SKILL.md +203 -0
- package/skills/risk-compliance/similar-domain/references/entities.md +67 -0
- package/skills/risk-compliance/similar-domain/references/fingerprints.md +134 -0
- package/skills/risk-compliance/similar-domain/references/pivots.md +82 -0
- package/skills/risk-compliance/similar-domain/references/report-template.md +93 -0
- package/skills/risk-compliance/similar-domain/references/scoring.md +130 -0
- package/skills/risk-compliance/similar-domain/references/terminology.md +41 -0
- package/skills/risk-compliance/similar-domain/references/workflow.md +85 -0
- package/skills/risk-compliance/similar-domain/release-check.mjs +93 -0
- package/skills/risk-compliance/tld-detection/LICENSE +3 -0
- package/skills/risk-compliance/tld-detection/SKILL.md +245 -0
- package/skills/risk-compliance/tld-detection/agents/openai.yaml +9 -0
- package/skills/risk-compliance/tld-detection/references/chinese-polish.md +55 -0
- package/skills/risk-compliance/tld-detection/references/clean.md +51 -0
- package/skills/risk-compliance/tld-detection/references/clustering.md +235 -0
- package/skills/risk-compliance/tld-detection/references/decision.md +189 -0
- package/skills/risk-compliance/tld-detection/references/fx-conversion.md +232 -0
- package/skills/risk-compliance/tld-detection/references/report-template.md +272 -0
- package/skills/risk-compliance/tld-detection/references/streams.md +141 -0
- package/skills/risk-compliance/tld-detection/references/terminology.md +95 -0
- package/skills/risk-compliance/tld-detection/references/workflow.md +95 -0
- package/skills/risk-compliance/tld-detection/release-check.mjs +93 -0
- package/skills/risk-compliance/tld-detection/scripts/detect_ladders.py +390 -0
- package/skills/risk-compliance/tld-detection/scripts/detect_ladders.test.mjs +14 -0
- package/skills/risk-compliance/tld-detection/scripts/detect_streams.py +650 -0
- package/skills/risk-compliance/tld-detection/scripts/detect_streams.test.mjs +14 -0
- package/skills/risk-compliance/tld-detection/tests/test_detect_ladders.py +134 -0
- package/skills/risk-compliance/tld-detection/tests/test_detect_streams.py +520 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Checklist
|
|
2
|
+
|
|
3
|
+
The core checks for every document. Run them alongside the reader test and the template's
|
|
4
|
+
`Done when`, against the same version. Write every finding down before fixing any.
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- [Facts](#facts)
|
|
9
|
+
- [Argument](#argument)
|
|
10
|
+
- [Cut](#cut)
|
|
11
|
+
- [House style](#house-style)
|
|
12
|
+
- [Language](#language)
|
|
13
|
+
|
|
14
|
+
## Facts
|
|
15
|
+
|
|
16
|
+
- Every name, number, date, obligation and claim traces to the brief, a source or a computed result.
|
|
17
|
+
- Nothing came from a template example, WRITING.md example or an earlier document.
|
|
18
|
+
- Each number keeps its period, denominator and unit where it is stated. Example: "approval rate
|
|
19
|
+
62.40%" → of which attempts, in which window.
|
|
20
|
+
- Each gap uses the [gap markers](../../house-style/references/rules.md#gap-markers) and is listed
|
|
21
|
+
in the delivery note. No other placeholder remains: search for `{{`, `[Name]`, `XX`, `____`,
|
|
22
|
+
`lorem`, and bare `TBD` outside a table cell under a sentence naming who will agree it.
|
|
23
|
+
- Uncertainty that changes a decision is stated where the claim is made, with what it depends on.
|
|
24
|
+
- A period that runs past the data's cut-off or today's date is marked as partial. Example: an
|
|
25
|
+
"October" report written on 20 October → "1–19 October".
|
|
26
|
+
- Every link and image target exists. Example: `[方法说明](methodology.zh.md)` with no such file →
|
|
27
|
+
a finding.
|
|
28
|
+
- A hypothesis stays a hypothesis. Example: "payment-pattern names are inferred" → never "the
|
|
29
|
+
merchant runs a top-up business".
|
|
30
|
+
|
|
31
|
+
## Argument
|
|
32
|
+
|
|
33
|
+
- The first paragraph gives the answer or the purpose, not the background.
|
|
34
|
+
- A reader who was not in the analysis can follow the conclusion. Example: "C1 is high priority
|
|
35
|
+
because of a 2x ladder at 100% single-country concentration" → name what a 2x ladder is, or say
|
|
36
|
+
what it means for the reader.
|
|
37
|
+
- Each section relies only on what the reader knows or an earlier section established.
|
|
38
|
+
- Each policy, rule or definition appears once; other places refer to it.
|
|
39
|
+
- Facts, assumptions, analysis and recommendations are distinguishable.
|
|
40
|
+
- The template's `Done when` questions all answer yes (or n/a for a section the brief's scope
|
|
41
|
+
removed).
|
|
42
|
+
|
|
43
|
+
## Cut
|
|
44
|
+
|
|
45
|
+
Delete these; keep only what changes the reader's understanding or action.
|
|
46
|
+
|
|
47
|
+
- **The obvious.** A zero, an empty set or a default that the reader would assume. Example:
|
|
48
|
+
"0 sales failed to match an authorization" → delete; keep "267 October sales matched
|
|
49
|
+
authorizations from earlier months".
|
|
50
|
+
- **Method narration.** How a number was computed, when the method is standard or shown in a table.
|
|
51
|
+
Keep a method note only where a reader would otherwise misread the number.
|
|
52
|
+
- **One word doing every job.** A generic label repeated across headings, tables and prose.
|
|
53
|
+
Example: "证据" for data, fields, tables and records → say which: "历史明细表", "汇率来源及折算记录",
|
|
54
|
+
"缺少首次报送日期".
|
|
55
|
+
- **Repeats.** The same caveat in every section, a closing summary or verdict that restates the
|
|
56
|
+
opening, a table that repeats the prose.
|
|
57
|
+
- **Exhaustive detail in the body.** Diagnostic tables, full reconciliations and every tested
|
|
58
|
+
variant belong in an appendix, a collapsed view or the evidence file. Keep in the body what the
|
|
59
|
+
conclusion rests on.
|
|
60
|
+
- **Internal names.** Script, field or pipeline terms the reader never sees. Example: "合格授权",
|
|
61
|
+
"关联支持记录", `source_hash` → the business meaning from the sources; meaning unknown and the
|
|
62
|
+
reader needs the number → a gap; otherwise cut it.
|
|
63
|
+
|
|
64
|
+
## House style
|
|
65
|
+
|
|
66
|
+
- Terms match TERMINOLOGY.md, else the bundled
|
|
67
|
+
[common terms](../../house-style/references/terminology-zh.md); no Avoid term appears in the sense
|
|
68
|
+
its row avoids.
|
|
69
|
+
- Every **Required** rule in WRITING.md and the template holds, unless the brief overrode it.
|
|
70
|
+
- `locked` text is verbatim.
|
|
71
|
+
|
|
72
|
+
## Language
|
|
73
|
+
|
|
74
|
+
Remove these patterns; replace them with the specific claim or nothing:
|
|
75
|
+
|
|
76
|
+
- **Inflated significance**: "plays a pivotal role", "a testament to", "marks a significant
|
|
77
|
+
milestone".
|
|
78
|
+
- **Vague attribution**: "experts agree", "industry reports suggest" with no named source.
|
|
79
|
+
- **Filler openers and closers**: "It is important to note that", "In conclusion", a final
|
|
80
|
+
paragraph that repeats the summary.
|
|
81
|
+
- **Rhythm devices**: lists of exactly three adjectives, "not only … but also", "it's not X, it's Y".
|
|
82
|
+
- **Negative-first sentences** that make the reader invert them. Example: "未能匹配的销售为 0 笔"
|
|
83
|
+
→ delete (obvious), or state the positive fact.
|
|
84
|
+
- **Stock words and jargon**: the banned lists in the house-style guides
|
|
85
|
+
([English](../../house-style/references/style-en.md#words),
|
|
86
|
+
[中文](../../house-style/references/style-zh.md)).
|
|
87
|
+
- **Formatting tics**: bold on every other phrase, inline-header bullet lists for prose reasoning,
|
|
88
|
+
em dashes in place of every comma.
|
|
89
|
+
- **Chinese**: decorative 首先……其次……最后, a 总结 paragraph that restates the opening,
|
|
90
|
+
translation artifacts. Sentence-level Chinese wording is `polish-cn`'s job; record a wording
|
|
91
|
+
finding here only when it changes meaning or blocks understanding.
|
|
92
|
+
|
|
93
|
+
Do not swap in a generic personality either. The voice is the one in WRITING.md, else the language
|
|
94
|
+
guide.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { dirname, join } from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
|
|
8
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
9
|
+
const WEEK_MS = 7 * DAY_MS;
|
|
10
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
|
|
12
|
+
function readJson(path, fallback = {}) {
|
|
13
|
+
try { return JSON.parse(readFileSync(path, 'utf8')); } catch { return fallback; }
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function frontmatterValue(text, key) {
|
|
17
|
+
const frontmatter = /^---\n([\s\S]*?)\n---/.exec(text)?.[1] ?? '';
|
|
18
|
+
const match = new RegExp('^' + key + ':\\s*([^\\n]+)$', 'm').exec(frontmatter);
|
|
19
|
+
return match?.[1].trim().replace(/^['"]|['"]$/g, '') ?? null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function repositoryOf(source) {
|
|
23
|
+
const value = String(source ?? '').trim();
|
|
24
|
+
const match = /^(?:git@github\.com:|https:\/\/github\.com\/)?([A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+?)(?:\.git)?$/.exec(value);
|
|
25
|
+
return match?.[1] ?? null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function stableVersion(value) {
|
|
29
|
+
const match = /^v?(\d+)\.(\d+)\.(\d+)$/.exec(String(value ?? '').trim());
|
|
30
|
+
return match ? match.slice(1).map(Number) : null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function newer(left, right) {
|
|
34
|
+
for (let index = 0; index < 3; index += 1) {
|
|
35
|
+
if (left[index] !== right[index]) return left[index] > right[index];
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function writeCache(path, value) {
|
|
41
|
+
try {
|
|
42
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
43
|
+
writeFileSync(path, JSON.stringify(value));
|
|
44
|
+
} catch { /* A read-only cache must not block skill use. */ }
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function main(now = Date.now()) {
|
|
48
|
+
if (process.env.ONEABOVEIO_NO_UPDATE_CHECK) return;
|
|
49
|
+
const skill = readFileSync(join(here, 'SKILL.md'), 'utf8');
|
|
50
|
+
const name = frontmatterValue(skill, 'name');
|
|
51
|
+
const localVersion = stableVersion(frontmatterValue(skill, 'release-version'));
|
|
52
|
+
if (!name || !localVersion) return;
|
|
53
|
+
|
|
54
|
+
const lock = readJson(join(process.env.HOME || homedir(), '.agents', '.skill-lock.json'));
|
|
55
|
+
const entry = lock.skills?.[name];
|
|
56
|
+
const repository = repositoryOf(entry?.sourceUrl || entry?.source);
|
|
57
|
+
if (!repository) return;
|
|
58
|
+
|
|
59
|
+
const cacheRoot = process.env.XDG_CACHE_HOME || join(process.env.HOME || homedir(), '.cache');
|
|
60
|
+
const cachePath = join(cacheRoot, '1aboveio-skills', 'release-check.json');
|
|
61
|
+
const all = readJson(cachePath);
|
|
62
|
+
const cache = all[repository] && typeof all[repository] === 'object' ? all[repository] : {};
|
|
63
|
+
|
|
64
|
+
if (!cache.lastCheck || now - cache.lastCheck >= DAY_MS) {
|
|
65
|
+
const result = spawnSync('gh', ['api', 'repos/' + repository + '/releases/latest', '--jq', '.tag_name'], {
|
|
66
|
+
encoding: 'utf8',
|
|
67
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
68
|
+
timeout: 1500,
|
|
69
|
+
});
|
|
70
|
+
cache.lastCheck = now;
|
|
71
|
+
if (result.status === 0 && stableVersion(result.stdout)) cache.latestTag = result.stdout.trim();
|
|
72
|
+
else delete cache.latestTag;
|
|
73
|
+
all[repository] = cache;
|
|
74
|
+
writeCache(cachePath, all);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const latestVersion = stableVersion(cache.latestTag);
|
|
78
|
+
if (!latestVersion || !newer(latestVersion, localVersion)) return;
|
|
79
|
+
if (cache.notifiedTag === cache.latestTag && cache.notifiedAt && now - cache.notifiedAt < WEEK_MS) return;
|
|
80
|
+
|
|
81
|
+
cache.notifiedTag = cache.latestTag;
|
|
82
|
+
cache.notifiedAt = now;
|
|
83
|
+
all[repository] = cache;
|
|
84
|
+
writeCache(cachePath, all);
|
|
85
|
+
const command = `npx skills@1.5.23 add '${repository}#${cache.latestTag}' --global --agent universal claude-code --skill ${name} --yes`;
|
|
86
|
+
process.stdout.write(
|
|
87
|
+
`UPDATE_AVAILABLE: A newer 1AboveIO skills release (${cache.latestTag}) is available; this skill is `
|
|
88
|
+
+ `v${localVersion.join('.')}. Ask once whether to refresh ${name}. On approval run \`${command}\`. `
|
|
89
|
+
+ 'The refreshed instructions apply next session. Either way, continue the current task and do not ask again this session.\n',
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
try { main(); } catch { /* Update checks are advisory and always fail silent. */ }
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: house-style
|
|
3
|
+
description: "Shared reference the writing skills read by path: WRITING.md lookup and precedence, template choice, gap markers, template shape, the bundled templates, and the default English and Chinese style guides. Never select or invoke it as a task."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
user-invocable: false
|
|
6
|
+
release-version: 0.36.0
|
|
7
|
+
---
|
|
8
|
+
**Updates:** Once/session run `node <skill-base-dir>/release-check.mjs`.
|
|
9
|
+
# House style
|
|
10
|
+
|
|
11
|
+
Reference files the writing skills share. Read the one the calling skill names; do not run this
|
|
12
|
+
skill on its own. Writing a document → `write-doc`. Learning a style from approved documents →
|
|
13
|
+
`distill-writing`.
|
|
14
|
+
|
|
15
|
+
| Need | Read |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| Where WRITING.md is, which template, which rule wins, gap markers, template shape, who edits what | [rules](references/rules.md) |
|
|
18
|
+
| No WRITING.md, or a rule it does not cover | [defaults](references/defaults.md) |
|
|
19
|
+
| Sentences in English / in Chinese | [style-en](references/style-en.md) / [style-zh](references/style-zh.md) |
|
|
20
|
+
| Common Chinese terms (简体 and Hong Kong 繁體), translation-ese fixes, words to avoid | [terminology-zh](references/terminology-zh.md) |
|
|
21
|
+
| Bundled templates and where they came from | [templates/](templates/), [sources](references/sources.md) |
|
|
22
|
+
|
|
23
|
+
Bundled templates: [brd](templates/brd.md) · [prd](templates/prd.md) ·
|
|
24
|
+
[gap-analysis](templates/gap-analysis.md) · [technical-spec](templates/technical-spec.md) ·
|
|
25
|
+
[integration-guide](templates/integration-guide.md) ·
|
|
26
|
+
[commercial-proposal](templates/commercial-proposal.md) ·
|
|
27
|
+
[compliance-policy](templates/compliance-policy.md) ·
|
|
28
|
+
[risk-operations-procedure](templates/risk-operations-procedure.md) ·
|
|
29
|
+
[general](templates/general.md).
|
|
30
|
+
|
|
31
|
+
**Never edit these files for one project.** A project's rules go in its WRITING.md and
|
|
32
|
+
`writing/templates/` ([who edits what](references/rules.md#who-edits-what)). Example: a client
|
|
33
|
+
wants "merchant", not "seller" → their TERMINOLOGY.md, not `style-en.md`.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Bundled defaults
|
|
2
|
+
|
|
3
|
+
Apply these when WRITING.md is missing or silent on a point. Every item is a **Default**: the
|
|
4
|
+
assignment, WRITING.md and the chosen template all override it
|
|
5
|
+
([precedence](rules.md#resolve-conflicting-instructions)).
|
|
6
|
+
|
|
7
|
+
This file holds what applies in any language. Sentence-level rules live in the language guides:
|
|
8
|
+
read [English style](style-en.md) for English and [中文风格](style-zh.md) for Chinese; read both in
|
|
9
|
+
bilingual mode.
|
|
10
|
+
|
|
11
|
+
## Contents
|
|
12
|
+
|
|
13
|
+
- [Scope](#scope)
|
|
14
|
+
- [Numbers, dates and names](#numbers-dates-and-names)
|
|
15
|
+
- [Structure](#structure)
|
|
16
|
+
- [Presentation](#presentation)
|
|
17
|
+
|
|
18
|
+
## Scope
|
|
19
|
+
|
|
20
|
+
**Write what the brief asks for, at the length it asks for.** A template lists what a full document
|
|
21
|
+
of its type covers; a narrower brief gets a narrower document. Example: "a short policy, one page"
|
|
22
|
+
stays within one page, with no content the sources never mention.
|
|
23
|
+
|
|
24
|
+
**Mark only the gaps the reader needs** ([gap markers](rules.md#gap-markers)). In a table, write
|
|
25
|
+
`TBD` (Chinese: `待确认`, Traditional `待確認`) in each unknown cell and put one sentence above
|
|
26
|
+
the table: "Owners and dates are to be agreed by `<who>`." Never write `[TBD: owner, owner: X]`.
|
|
27
|
+
|
|
28
|
+
## Numbers, dates and names
|
|
29
|
+
|
|
30
|
+
- Use numerals for 10 and above, and for all measurements, money and percentages.
|
|
31
|
+
- Money: currency code and amount, `USD 1,250,000`; state the period for rates (`per month`).
|
|
32
|
+
- Dates: `17 October 2026` in English prose, `2026-10-17` in tables, `2026 年 10 月 17 日` in
|
|
33
|
+
Chinese. Never "next week" without a date.
|
|
34
|
+
- Keep every figure exactly as the source gives it. Round only in a summary, and keep the precise
|
|
35
|
+
figure in the body.
|
|
36
|
+
|
|
37
|
+
## Structure
|
|
38
|
+
|
|
39
|
+
- Open the document and each section with its point.
|
|
40
|
+
- Order sections so each relies only on what the reader knows or an earlier section established.
|
|
41
|
+
- Keep each policy, rule or definition in one place; refer to it elsewhere. A worked example may
|
|
42
|
+
repeat a number the policy states.
|
|
43
|
+
- Put background after the point, and only as much as the reader needs.
|
|
44
|
+
- End with what happens next: decision, actions with owners and dates, or open questions.
|
|
45
|
+
|
|
46
|
+
## Presentation
|
|
47
|
+
|
|
48
|
+
- **Headings**: sentence case, informative ("Disputes double after the price change", not
|
|
49
|
+
"Analysis"). `#` once for the title; do not skip levels, unless WRITING.md or the template
|
|
50
|
+
records a house pattern that does (house evidence beats this default).
|
|
51
|
+
- **Paragraphs**: two to five sentences. One line per paragraph in the source file; no hard wraps
|
|
52
|
+
inside a paragraph unless the project's files already wrap.
|
|
53
|
+
- **Lists**: only for parallel items or steps. Numbered for sequences, bullets otherwise. Not for
|
|
54
|
+
reasoning that needs "because" and "so".
|
|
55
|
+
- **Tables**: when three or more items share the same attributes. Every column has a header; no
|
|
56
|
+
empty cells (write `n/a` or `TBD`).
|
|
57
|
+
- **Emphasis**: bold for the few words a skimming reader must see; no bold sentences in a row, no
|
|
58
|
+
italics for emphasis, no ALL CAPS.
|
|
59
|
+
- **Code**: field names, endpoints, commands, file names and config keys in code font, exactly as
|
|
60
|
+
the system spells them.
|
|
61
|
+
- **Links and citations**: link the descriptive words, not "here". Cite a source after the claim it
|
|
62
|
+
supports: `(Ops report, Q2 2026)`, or a numbered reference list for long documents.
|
|
63
|
+
- **Diagrams**: Mermaid for flows, sequences and state, when the reader would otherwise hold more
|
|
64
|
+
than four steps or actors in mind. Every diagram has a sentence saying what it shows.
|
|
65
|
+
- **Callouts**: a blockquote starting `**Note:**` or `**Warning:**` (`**注意:**`, `**警告:**`),
|
|
66
|
+
only for an aside that would derail the paragraph.
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# House-style rules
|
|
2
|
+
|
|
3
|
+
The one definition of the local writing files, the lookup and precedence rules, the gap markers,
|
|
4
|
+
and the shape every document template follows. `write-doc` and the other writing skills read these
|
|
5
|
+
files; `distill-writing` creates and updates them. They link here; none restates it.
|
|
6
|
+
|
|
7
|
+
## Contents
|
|
8
|
+
|
|
9
|
+
- [Local files](#local-files)
|
|
10
|
+
- [Find WRITING.md](#find-writingmd)
|
|
11
|
+
- [Choose the template](#choose-the-template)
|
|
12
|
+
- [Resolve conflicting instructions](#resolve-conflicting-instructions)
|
|
13
|
+
- [Rule strength and evidence](#rule-strength-and-evidence)
|
|
14
|
+
- [Gap markers](#gap-markers)
|
|
15
|
+
- [WRITING.md shape](#writingmd-shape)
|
|
16
|
+
- [Template shape](#template-shape)
|
|
17
|
+
- [Who edits what](#who-edits-what)
|
|
18
|
+
|
|
19
|
+
## Local files
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
project/
|
|
23
|
+
WRITING.md shared voice, presentation, template index
|
|
24
|
+
TERMINOLOGY.md preferred term per concept and language, terms to avoid (`terminology`)
|
|
25
|
+
writing/
|
|
26
|
+
templates/<type>.md project templates (same shape as bundled ones)
|
|
27
|
+
examples/<type>-<n>.md optional approved or sanitized excerpts
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Create files lazily: no empty `writing/` folder, no template without evidence for it.
|
|
31
|
+
|
|
32
|
+
**WRITING.md holds what every document shares; a template holds what one document type needs.**
|
|
33
|
+
Example: "Write amounts as `USD 1,250,000`" goes in WRITING.md. "Put the price table before the
|
|
34
|
+
terms" goes in `writing/templates/commercial-proposal.md`.
|
|
35
|
+
|
|
36
|
+
## Find WRITING.md
|
|
37
|
+
|
|
38
|
+
1. Start in the directory of the document being written or edited. With no output path yet, start
|
|
39
|
+
in the current working directory. A report written from an input file (a contract, a findings
|
|
40
|
+
file) starts in the input file's directory instead: the client's house style sits with the
|
|
41
|
+
client's files. Pasted input: start in the output directory, else the working directory.
|
|
42
|
+
2. Walk up one directory at a time. The first `WRITING.md` found applies. Do not merge it with a
|
|
43
|
+
`WRITING.md` further up.
|
|
44
|
+
3. Stop at the project root: the nearest ancestor containing `.git`. With no `.git` above the start,
|
|
45
|
+
keep walking up, but never use a `WRITING.md` in the user's home directory or any directory
|
|
46
|
+
above it.
|
|
47
|
+
4. No `WRITING.md` found: write from the brief and the bundled
|
|
48
|
+
[defaults](defaults.md). Say so in the delivery note. Do not create one.
|
|
49
|
+
|
|
50
|
+
`TERMINOLOGY.md` sits beside the `WRITING.md` that applies, else at the project root; find it
|
|
51
|
+
the same way. An older WRITING.md that still holds a Terms table: use its rows too, TERMINOLOGY.md
|
|
52
|
+
winning, and suggest `terminology` to move them.
|
|
53
|
+
|
|
54
|
+
Resolve every relative link from the file that contains it. Project templates live in
|
|
55
|
+
`writing/templates/` beside the `WRITING.md` that applies, unless its template index links
|
|
56
|
+
elsewhere.
|
|
57
|
+
|
|
58
|
+
Example: writing `clients/acme/proposal.md` in a repo with `clients/acme/WRITING.md` and a root
|
|
59
|
+
`WRITING.md` applies `clients/acme/WRITING.md` only, and its templates come from
|
|
60
|
+
`clients/acme/writing/templates/`.
|
|
61
|
+
|
|
62
|
+
## Choose the template
|
|
63
|
+
|
|
64
|
+
Take the first that applies:
|
|
65
|
+
|
|
66
|
+
1. **Explicit choice**: the user, or the skill that produced the document, names a template or a
|
|
67
|
+
path. Use it even if another matches better. Example: `payment-analysis` names its
|
|
68
|
+
`references/report-template.md` → review its reports against that file.
|
|
69
|
+
2. **Project template**: a file in the project's `writing/templates/` whose `Use when` matches the
|
|
70
|
+
assignment.
|
|
71
|
+
3. **Bundled template**: one of the bundled [templates](../templates/).
|
|
72
|
+
4. **General**: [general.md](../templates/general.md), adapted into an outline for this assignment.
|
|
73
|
+
|
|
74
|
+
A project template with the same file name as a bundled one replaces it completely. Never merge the
|
|
75
|
+
two.
|
|
76
|
+
|
|
77
|
+
Example: the project has `writing/templates/prd.md`; the user asks for a PRD → use the project
|
|
78
|
+
file, not the bundled `prd.md`. The user says "use the bundled PRD template" → use the bundled one.
|
|
79
|
+
|
|
80
|
+
Language is not a template choice. English, Chinese and bilingual output work with every template
|
|
81
|
+
(`write-doc` [bilingual mode](../../write-doc/references/bilingual.md)).
|
|
82
|
+
|
|
83
|
+
## Resolve conflicting instructions
|
|
84
|
+
|
|
85
|
+
**Facts control factual claims, always.** No style rule, template or brief makes an unsupported
|
|
86
|
+
claim acceptable.
|
|
87
|
+
|
|
88
|
+
For everything else, the higher item wins:
|
|
89
|
+
|
|
90
|
+
1. The assignment: what the user asked for in this request.
|
|
91
|
+
2. Local **Required** rules: the chosen project template, then WRITING.md.
|
|
92
|
+
3. Local **Default** rules: the chosen project template, then WRITING.md.
|
|
93
|
+
4. Bundled rules: the chosen bundled template, then the language guide
|
|
94
|
+
([English](style-en.md), [中文](style-zh.md)), then [defaults](defaults.md).
|
|
95
|
+
5. Writer judgment.
|
|
96
|
+
|
|
97
|
+
At the same strength the template wins over WRITING.md.
|
|
98
|
+
|
|
99
|
+
**Words follow TERMINOLOGY.md.** For which term to use, the order is: the assignment, then
|
|
100
|
+
TERMINOLOGY.md, then the template and WRITING.md, then the common
|
|
101
|
+
[terminology](terminology-zh.md). Example: a template example says "seller" and TERMINOLOGY.md
|
|
102
|
+
says "merchant" → write "merchant".
|
|
103
|
+
|
|
104
|
+
Example: WRITING.md says "Default: no tables in executive summaries"; the brief says "put the
|
|
105
|
+
three options in a table at the top" → use the table. WRITING.md says "Default: open with the
|
|
106
|
+
overall rating"; the board-briefing template says "Default: open with the decision asked" → open
|
|
107
|
+
with the decision. WRITING.md says "Required: amounts in USD with ISO code"; the source quotes
|
|
108
|
+
"$1.2m" → write `USD 1,200,000` and keep the source figure exact.
|
|
109
|
+
|
|
110
|
+
## Rule strength and evidence
|
|
111
|
+
|
|
112
|
+
Every rule in WRITING.md or a project template carries a strength:
|
|
113
|
+
|
|
114
|
+
- **Required**: apply unless this request explicitly overrides it; name the override in the
|
|
115
|
+
delivery note.
|
|
116
|
+
- **Default**: apply unless the assignment says otherwise.
|
|
117
|
+
- **Optional**: a known good pattern; use when it helps the reader.
|
|
118
|
+
|
|
119
|
+
An inferred rule carries its evidence and confidence in one short trailer. A rule the user stated
|
|
120
|
+
carries `(user)` instead.
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
- Default: open each section with its conclusion in one sentence.
|
|
124
|
+
_(ref: q3-risk-review.md §2, "Overall exposure is moderate"; acme-assessment.md §1; high)_
|
|
125
|
+
- Required: call the client "the Client", never by name, in templates and examples. _(user)_
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Confidence: **high** = three or more agreeing references, or an explicit guide; **medium** = one or
|
|
129
|
+
two references; **low** = one reference with counter-evidence, or an inference from layout alone.
|
|
130
|
+
No numeric scores.
|
|
131
|
+
|
|
132
|
+
Evidence quotes show the pattern, not the old assignment: replace names and figures with `…`.
|
|
133
|
+
Example: `"Overall, the Client's … is rated Amber"`, not the client's name or its alert count.
|
|
134
|
+
A rule's own example uses neutral values, never a reference's: "counts in digits (`12 次`)", not
|
|
135
|
+
the `11 次` the reference reported.
|
|
136
|
+
|
|
137
|
+
A project template line identical to the bundled template its `Sources` names is bundled text:
|
|
138
|
+
it needs no trailer and is not a hand edit.
|
|
139
|
+
|
|
140
|
+
## Gap markers
|
|
141
|
+
|
|
142
|
+
Mark a fact the reader needs and no source gives as `[TBD: <what>, owner: <who>]` (Chinese:
|
|
143
|
+
`【待确认:<内容>,负责人:<谁>】`, Traditional Chinese: `【待確認:<內容>,負責人:<誰>】`). In a
|
|
144
|
+
table, write `TBD` (`待确认`, `待確認`) in each unknown cell and put one sentence above the table
|
|
145
|
+
naming who will agree them. The owner is the role a source names for that item, else the role
|
|
146
|
+
responsible for the document, else `owner: unknown` (`负责人:未知`, `負責人:未知`). A table of
|
|
147
|
+
unknown owners gets one sentence above it naming who should assign them, only when a source names
|
|
148
|
+
that person or role.
|
|
149
|
+
|
|
150
|
+
## WRITING.md shape
|
|
151
|
+
|
|
152
|
+
Use this skeleton. Omit any section with no evidence; do not invent content to fill it.
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
<!-- writing-md: 1 -->
|
|
156
|
+
# Writing guide: <project or organization>
|
|
157
|
+
|
|
158
|
+
## Readers and documents
|
|
159
|
+
Who reads our documents, what they decide or do with them, and the recurring document types.
|
|
160
|
+
|
|
161
|
+
## Voice
|
|
162
|
+
Constant across documents. A short "We are / We are not" table, each row with evidence. The brand
|
|
163
|
+
name and the closing call to action, when documents end with one.
|
|
164
|
+
|
|
165
|
+
## Language
|
|
166
|
+
Languages used, bilingual presentation (paired paragraphs or separate versions), source language.
|
|
167
|
+
|
|
168
|
+
## Terms
|
|
169
|
+
One line: `Terms: see [TERMINOLOGY.md](TERMINOLOGY.md).` The terms themselves live in
|
|
170
|
+
TERMINOLOGY.md, in the `terminology` skill's format; never a table here.
|
|
171
|
+
|
|
172
|
+
## Sentences and paragraphs
|
|
173
|
+
Length, person, tense, numbers, dates, currency, abbreviations.
|
|
174
|
+
|
|
175
|
+
## Structure and reasoning
|
|
176
|
+
How a conclusion, its evidence, trade-offs and the recommendation connect.
|
|
177
|
+
|
|
178
|
+
## Presentation
|
|
179
|
+
Headings, paragraph density, lists, tables, emphasis, links and citations, diagrams.
|
|
180
|
+
|
|
181
|
+
## Templates
|
|
182
|
+
| Template | Use when | Notes |
|
|
183
|
+
| --- | --- | --- |
|
|
184
|
+
| risk-assessment (`writing/templates/risk-assessment.md`) | ... | ... |
|
|
185
|
+
|
|
186
|
+
## Examples
|
|
187
|
+
Two or three short annotated excerpts (approved or sanitized), or links to writing/examples/.
|
|
188
|
+
|
|
189
|
+
## Sources and open choices
|
|
190
|
+
References read (file, date, standing: approved guide / approved document / draft), conflicts not
|
|
191
|
+
yet decided with the recommended answer, and intentional exceptions.
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Tone that varies by document type (formality, technical depth) goes in the template's `Tone` line,
|
|
195
|
+
not in Voice.
|
|
196
|
+
|
|
197
|
+
## Template shape
|
|
198
|
+
|
|
199
|
+
A template is a strategy for one document type. Every template, bundled or project, has these
|
|
200
|
+
sections in this order:
|
|
201
|
+
|
|
202
|
+
1. **Use when**: the reader, the decision or action the document serves, and when to pick this
|
|
203
|
+
template over a neighbor.
|
|
204
|
+
2. **Tone**: one line: formality, technical depth, and any type-specific voice shift.
|
|
205
|
+
3. **Inputs**: the evidence the writer can use. Mark an input the reader cannot do without
|
|
206
|
+
`Material:` with its action: `ask once`, `mark [TBD]` ([gap markers](#gap-markers)), or `narrow the scope`, or two of them in
|
|
207
|
+
order (`ask once, else narrow the scope`). An unmarked input follows its own line's instruction
|
|
208
|
+
when it has one; otherwise leave it out.
|
|
209
|
+
4. **Reasoning**: how to turn the inputs into the argument, analysis or specification.
|
|
210
|
+
5. **Sections**: the outline. For each section: what it must achieve, its strength, and how to
|
|
211
|
+
adapt it. Strength is `Required`, `Optional`, or `Required when <condition>`. Keep the order
|
|
212
|
+
unless the reader's decision needs another.
|
|
213
|
+
6. **Done when**: the type-specific checks that make the result useful. Each is a yes/no question.
|
|
214
|
+
A question about a section the brief's scope removed answers n/a.
|
|
215
|
+
7. **Sources**: where the bundled default was adapted from, or, for a project template, the
|
|
216
|
+
references it was distilled from.
|
|
217
|
+
|
|
218
|
+
Use this skeleton for every template, bundled or distilled:
|
|
219
|
+
|
|
220
|
+
```markdown
|
|
221
|
+
# <Type>: <short qualifier>
|
|
222
|
+
|
|
223
|
+
## Use when
|
|
224
|
+
<Reader, the decision or action, when to pick it.> Then one bullet per neighbor:
|
|
225
|
+
- Pick **<other-template>** instead when …
|
|
226
|
+
|
|
227
|
+
## Tone
|
|
228
|
+
<One line.>
|
|
229
|
+
|
|
230
|
+
## Inputs
|
|
231
|
+
- <Input>. Material: <ask once | mark [TBD] | narrow the scope>.
|
|
232
|
+
|
|
233
|
+
## Reasoning
|
|
234
|
+
1. <Step from inputs toward the conclusion.>
|
|
235
|
+
|
|
236
|
+
## Sections
|
|
237
|
+
Omit Optional sections that add nothing. Do not pad with empty headings.
|
|
238
|
+
|
|
239
|
+
1. **<Section>** (Required | Optional): <what it must achieve; how to adapt it>.
|
|
240
|
+
|
|
241
|
+
## Done when
|
|
242
|
+
- <Yes/no question>?
|
|
243
|
+
|
|
244
|
+
## Sources
|
|
245
|
+
<Bundled: what informed it. Project: the references it was distilled from, and the bundled
|
|
246
|
+
template it started from with the write-doc release-version, e.g. "bundled gap-analysis, 0.36.0".>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Locked text** is wording an outside authority mandates (a regulator, a scheme, a signed
|
|
250
|
+
contract). It sits in a fenced block marked `locked`, with its source on the line above, and is
|
|
251
|
+
copied unchanged and never translated into the document's voice. House boilerplate is not locked:
|
|
252
|
+
it is a Default, adapted when the facts differ. Example: a rating scale saying "exposes the Client
|
|
253
|
+
to regulatory action" is house text; for an internal-standard review, adapt it.
|
|
254
|
+
|
|
255
|
+
## Who edits what
|
|
256
|
+
|
|
257
|
+
- `write-doc` never edits WRITING.md or a project template unless the user asks in that request.
|
|
258
|
+
A correction applies to the current document only.
|
|
259
|
+
- `distill-writing` updates them deliberately: it keeps `(user)` rules and manual edits, and lists
|
|
260
|
+
every material change and conflict before or as it writes.
|
|
261
|
+
- Any writing skill adds a row to TERMINOLOGY.md the moment the user settles a term, and creates
|
|
262
|
+
the file for the first one (`terminology` format). `write-doc` also seeds the file with
|
|
263
|
+
`proposed` rows when it writes a new document in a project without one. It never writes a term the user did not state
|
|
264
|
+
or approve, except as `proposed`.
|
|
265
|
+
- A user may edit any of these files by hand at any time; hand edits win over distilled rules.
|
|
266
|
+
- Skill updates replace the bundled templates and defaults only. Project files are never touched by
|
|
267
|
+
an update.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Sources and attribution
|
|
2
|
+
|
|
3
|
+
The bundled templates, defaults and English style guide are original text written for this skill;
|
|
4
|
+
the sources below informed their structure and ideas. The Chinese style guide is adapted from an
|
|
5
|
+
MIT-licensed source, as marked. Checked 2026-10-17.
|
|
6
|
+
|
|
7
|
+
| Area | Source | License | How it is used |
|
|
8
|
+
| --- | --- | --- | --- |
|
|
9
|
+
| Editorial baseline | [Google developer documentation style guide](https://developers.google.com/style/highlights) | CC BY 4.0 (text) | Ideas for [style-en](style-en.md) (lead with the point, active voice, everyday words) and [defaults](defaults.md) (informative headings, link text). |
|
|
10
|
+
| Technology voice | [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/) | All rights reserved | Linked for reference only. |
|
|
11
|
+
| English technical style | [Cursor `technical-writing` skill](https://github.com/cursor/plugins/blob/main/pstack/skills/technical-writing/SKILL.md) | No license stated | Ideas only for [style-en](style-en.md): layered rules, rhythm, the system as the word list. No text copied. |
|
|
12
|
+
| Chinese technical style | [Fenng/tech-doc-style-chinese](https://github.com/Fenng/tech-doc-style-chinese) | MIT | Adapted into [style-zh](style-zh.md); the copyright and permission notice is reproduced at its end. |
|
|
13
|
+
| PRD | [Atlassian product requirements template](https://www.atlassian.com/software/confluence/templates/product-requirements) | All rights reserved | Linked; [prd](../templates/prd.md) is adapted from the retired `prd` skill in this repository. |
|
|
14
|
+
| BRD | Retired `brd` skill in this repository | MIT (1aboveio/ai) | Folded into [brd](../templates/brd.md). |
|
|
15
|
+
| Technical spec | [GitLab design document template](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/_template/), [arc42](https://arc42.org/overview/) | All rights reserved; CC BY-SA 4.0 | Ideas only for [technical-spec](../templates/technical-spec.md). No arc42 text is adapted, so share-alike does not apply. |
|
|
16
|
+
| Decision records | [MADR](https://adr.github.io/madr/) | MIT or CC0-1.0 | Ideas for recording options and decisions in technical-spec. |
|
|
17
|
+
| Integration guide | [Diátaxis](https://diataxis.fr/start-here/) | CC BY-SA 4.0 | The tutorial / how-to / reference / explanation distinction shapes [integration-guide](../templates/integration-guide.md). No Diátaxis text is adapted. |
|
|
18
|
+
| Project updates | [Atlassian project status template](https://www.atlassian.com/software/confluence/templates/project-status) | All rights reserved | Linked; covered by [general](../templates/general.md). |
|
|
19
|
+
| Local context files | [Impeccable](https://impeccable.style/docs/context/) | Apache-2.0 (code repository) | The idea of keeping editable project context apart from the skill. No text used. |
|
|
20
|
+
|
|
21
|
+
Gap analysis, compliance policy, risk operations procedure and commercial proposal are authored
|
|
22
|
+
for this skill. Improve them for a project by distilling approved examples with `distill-writing`.
|
|
23
|
+
|
|
24
|
+
When adding to a bundled file: write original text. Do not paste wording from an all-rights-reserved
|
|
25
|
+
source. Adapting text from a CC BY-SA source puts the adapted file under CC BY-SA 4.0; adapting
|
|
26
|
+
CC BY text requires the credit line "Portions adapted from <title>, <link>, CC BY 4.0, changes
|
|
27
|
+
made".
|