@thedecipherist/claude-packs 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/CHANGELOG.md +680 -0
- package/LICENSE +21 -0
- package/README.md +316 -2
- package/bin/claude-packs.mjs +204 -0
- package/configurations/base/config.json +85 -0
- package/configurations/cpp/config.json +92 -0
- package/configurations/full-stack/config.json +152 -0
- package/configurations/go/config.json +96 -0
- package/configurations/node/config.json +100 -0
- package/configurations/python/config.json +97 -0
- package/configurations/synth-creator/config.json +148 -0
- package/global/hooks/gnu-shell.mjs +131 -0
- package/global/hooks/lib/program-read.mjs +196 -0
- package/global/hooks/lib/program-writes.mjs +177 -0
- package/global/hooks/lib/shell-writes.mjs +293 -0
- package/global/hooks/shell-traps.mjs +79 -0
- package/global/hooks/version-pin-guard.mjs +280 -0
- package/global/skills/latest-versions/SKILL.md +49 -0
- package/lib/backup.mjs +34 -0
- package/lib/claude-md.mjs +58 -0
- package/lib/config-cli.mjs +36 -0
- package/lib/configs.mjs +145 -0
- package/lib/coverage.mjs +86 -0
- package/lib/custom-packs.mjs +93 -0
- package/lib/doctor.mjs +115 -0
- package/lib/fix-plan.mjs +71 -0
- package/lib/git-tokens.mjs +64 -0
- package/lib/global.mjs +125 -0
- package/lib/hook-proof.mjs +28 -0
- package/lib/hook-timing.mjs +42 -0
- package/lib/hover-gate.mjs +29 -0
- package/lib/kit-lock.mjs +149 -0
- package/lib/layout.mjs +75 -0
- package/lib/logs.mjs +69 -0
- package/lib/manifest.mjs +24 -0
- package/lib/new.mjs +49 -0
- package/lib/once-only-report.mjs +54 -0
- package/lib/pack-manifest.mjs +20 -0
- package/lib/packs.mjs +107 -0
- package/lib/planner.mjs +59 -0
- package/lib/repeats.mjs +65 -0
- package/lib/repo-weight.mjs +28 -0
- package/lib/rules.mjs +40 -0
- package/lib/scan-detect.mjs +94 -0
- package/lib/scan.mjs +168 -0
- package/lib/selftest-cache.mjs +39 -0
- package/lib/settings.mjs +138 -0
- package/lib/shape-cli.mjs +76 -0
- package/lib/shape.mjs +4 -0
- package/lib/suggest.mjs +18 -0
- package/lib/switches.mjs +44 -0
- package/lib/symmetry-doctor.mjs +26 -0
- package/lib/sync.mjs +130 -0
- package/package.json +34 -4
- package/packs/ai/checks/boundary-computes-its-own-hash.json +30 -0
- package/packs/ai/checks/model-call-needs-boundary.json +29 -0
- package/packs/ai/checks/model-id-from-config.json +28 -0
- package/packs/ai/checks/model-output-validated.json +26 -0
- package/packs/ai/pack.json +38 -0
- package/packs/ai/rules/ai-input-sha-boundary.md +31 -0
- package/packs/ai/rules/llm-pipeline-security.md +26 -0
- package/packs/audio-core/checks/denormals-not-in-prepare.json +12 -0
- package/packs/audio-core/checks/dsp-without-apvts.json +12 -0
- package/packs/audio-core/checks/float-phase-or-rate.json +12 -0
- package/packs/audio-core/checks/juce-snap-to-zero-off.json +12 -0
- package/packs/audio-core/checks/keep-werror.json +12 -0
- package/packs/audio-core/checks/no-fast-math.json +14 -0
- package/packs/audio-core/checks/no-locale-change.json +12 -0
- package/packs/audio-core/checks/no-march-native.json +14 -0
- package/packs/audio-core/clang-tidy +28 -0
- package/packs/audio-core/hooks/lib/realtime-checks.mjs +56 -0
- package/packs/audio-core/hooks/param-id-lock.mjs +129 -0
- package/packs/audio-core/hooks/realtime-guard.mjs +67 -0
- package/packs/audio-core/pack.json +187 -0
- package/packs/audio-core/rules/audio-thread-realtime-safe.md +27 -0
- package/packs/audio-core/rules/audio-ui-thread-handoff.md +21 -0
- package/packs/audio-core/rules/boundary-tests-cross-the-boundary.md +16 -0
- package/packs/audio-core/rules/build-flags-safe.md +20 -0
- package/packs/audio-core/rules/cached-parameter-pointers.md +28 -0
- package/packs/audio-core/rules/clang-tidy-core-guidelines.md +21 -0
- package/packs/audio-core/rules/control-reaches-every-surface.md +23 -0
- package/packs/audio-core/rules/cpu-worst-case-per-block.md +26 -0
- package/packs/audio-core/rules/dc-block-after-asymmetry.md +22 -0
- package/packs/audio-core/rules/discrete-params-snap.md +19 -0
- package/packs/audio-core/rules/double-where-precision-matters.md +20 -0
- package/packs/audio-core/rules/filters-stable-under-modulation.md +29 -0
- package/packs/audio-core/rules/host-parameters-at-scale.md +24 -0
- package/packs/audio-core/rules/house-control-behaviours.md +34 -0
- package/packs/audio-core/rules/math-domain-guards.md +19 -0
- package/packs/audio-core/rules/modulated-delay-interpolation.md +22 -0
- package/packs/audio-core/rules/multiband-phase-coherent.md +22 -0
- package/packs/audio-core/rules/nonlinear-stages-antialiased.md +28 -0
- package/packs/audio-core/rules/note-ledger-and-pedals.md +22 -0
- package/packs/audio-core/rules/one-formula-per-value.md +20 -0
- package/packs/audio-core/rules/optimisations-are-null-tested.md +23 -0
- package/packs/audio-core/rules/oscillators-bandlimited.md +23 -0
- package/packs/audio-core/rules/output-limiter.md +23 -0
- package/packs/audio-core/rules/parameter-ids-never-change.md +20 -0
- package/packs/audio-core/rules/params-and-state-thread-safe.md +19 -0
- package/packs/audio-core/rules/params-snapshot-per-block.md +21 -0
- package/packs/audio-core/rules/patch-excludes-performance-controls.md +18 -0
- package/packs/audio-core/rules/per-sample-code-inlinable.md +22 -0
- package/packs/audio-core/rules/prepare-is-repeatable.md +23 -0
- package/packs/audio-core/rules/recursive-state-nan-guard.md +20 -0
- package/packs/audio-core/rules/reverb-loop-gain-bounded.md +24 -0
- package/packs/audio-core/rules/sample-accurate-midi.md +22 -0
- package/packs/audio-core/rules/sample-rate-and-block-size-from-host.md +23 -0
- package/packs/audio-core/rules/scoped-no-denormals.md +26 -0
- package/packs/audio-core/rules/smooth-continuous-parameters.md +22 -0
- package/packs/audio-core/rules/state-load-versioned-and-safe.md +22 -0
- package/packs/audio-core/rules/straight-on-and-aligned.md +21 -0
- package/packs/audio-core/rules/ui-matches-reference-look.md +21 -0
- package/packs/audio-core/rules/undo-one-gesture-one-step.md +21 -0
- package/packs/audio-core/rules/voice-steal-fades.md +21 -0
- package/packs/audio-core/rules/voice-sum-headroom.md +20 -0
- package/packs/audio-core/skills/analyse-reference-look/SKILL.md +21 -0
- package/packs/audio-core/skills/copy-and-prove/SKILL.md +98 -0
- package/packs/audio-core/skills/juce-realtime-audit/SKILL.md +22 -0
- package/packs/audio-core/skills/measure-tone/SKILL.md +20 -0
- package/packs/audio-core/skills/new-panel-control/SKILL.md +15 -0
- package/packs/audio-core/skills/prove-control/SKILL.md +23 -0
- package/packs/audio-core/skills/trace-parameter/SKILL.md +29 -0
- package/packs/audio-core/tools/lib/spectrum.mjs +112 -0
- package/packs/audio-core/tools/lib/wav.mjs +41 -0
- package/packs/audio-core/tools/tone-report.mjs +47 -0
- package/packs/base/checks/field-map-over-if-runs.json +25 -0
- package/packs/base/checks/lookup-over-if-chains.json +25 -0
- package/packs/base/checks/lookup-over-ternary-chains.json +20 -0
- package/packs/base/checks/no-code-after-midline-comment.json +12 -0
- package/packs/base/checks/one-walk-per-template.json +23 -0
- package/packs/base/checks/stub-reports-success.json +31 -0
- package/packs/base/checks/test-skip-on-failed-setup.json +17 -0
- package/packs/base/hooks/brief-guard.mjs +96 -0
- package/packs/base/hooks/code-shape.mjs +95 -0
- package/packs/base/hooks/dispatch-once.mjs +87 -0
- package/packs/base/hooks/file-size-guard.mjs +61 -0
- package/packs/base/hooks/folder-law.mjs +74 -0
- package/packs/base/hooks/git-guard.mjs +289 -0
- package/packs/base/hooks/lesson-checks.mjs +174 -0
- package/packs/base/hooks/lib/apply-edit.mjs +20 -0
- package/packs/base/hooks/lib/code-shapes.mjs +137 -0
- package/packs/base/hooks/lib/content.mjs +14 -0
- package/packs/base/hooks/lib/cpp-scan.mjs +94 -0
- package/packs/base/hooks/lib/dup-index.mjs +199 -0
- package/packs/base/hooks/lib/dup.mjs +127 -0
- package/packs/base/hooks/lib/elements.mjs +87 -0
- package/packs/base/hooks/lib/event-log.mjs +67 -0
- package/packs/base/hooks/lib/function-shapes.mjs +90 -0
- package/packs/base/hooks/lib/git-adds.mjs +20 -0
- package/packs/base/hooks/lib/git-guard-selftest.mjs +99 -0
- package/packs/base/hooks/lib/glob.mjs +33 -0
- package/packs/base/hooks/lib/hook-log.mjs +100 -0
- package/packs/base/hooks/lib/house.py +77 -0
- package/packs/base/hooks/lib/languages.mjs +66 -0
- package/packs/base/hooks/lib/layout.mjs +54 -0
- package/packs/base/hooks/lib/making-check-selftest.mjs +109 -0
- package/packs/base/hooks/lib/near-copies.mjs +76 -0
- package/packs/base/hooks/lib/program-read.mjs +196 -0
- package/packs/base/hooks/lib/program-writes.mjs +177 -0
- package/packs/base/hooks/lib/project.mjs +81 -0
- package/packs/base/hooks/lib/prose.mjs +11 -0
- package/packs/base/hooks/lib/pushed.mjs +201 -0
- package/packs/base/hooks/lib/repo-index.mjs +52 -0
- package/packs/base/hooks/lib/secret-patterns.mjs +18 -0
- package/packs/base/hooks/lib/selftest.mjs +45 -0
- package/packs/base/hooks/lib/shape-code.mjs +126 -0
- package/packs/base/hooks/lib/shape.mjs +294 -0
- package/packs/base/hooks/lib/shell-writes-selftest.mjs +65 -0
- package/packs/base/hooks/lib/shell-writes.mjs +293 -0
- package/packs/base/hooks/lib/turn.mjs +81 -0
- package/packs/base/hooks/lib/writes.mjs +71 -0
- package/packs/base/hooks/making-check.mjs +243 -0
- package/packs/base/hooks/making.mjs +106 -0
- package/packs/base/hooks/once-only.mjs +150 -0
- package/packs/base/hooks/placement-law.mjs +84 -0
- package/packs/base/hooks/repo-litter.mjs +75 -0
- package/packs/base/hooks/reuse-hint.mjs +75 -0
- package/packs/base/hooks/run-hooks.mjs +132 -0
- package/packs/base/hooks/secrets-guard.mjs +99 -0
- package/packs/base/hooks/shape-law.mjs +133 -0
- package/packs/base/hooks/suite-once.mjs +80 -0
- package/packs/base/hooks/template-law.mjs +148 -0
- package/packs/base/hooks/untrusted-boundary.mjs +53 -0
- package/packs/base/pack.json +214 -0
- package/packs/base/rules/a-control-is-seen-to-fire.md +27 -0
- package/packs/base/rules/behaviour-lives-with-its-kind.md +51 -0
- package/packs/base/rules/bug-fix-starts-red.md +25 -0
- package/packs/base/rules/field-map-over-if-runs.md +47 -0
- package/packs/base/rules/finished-work-lands.md +17 -0
- package/packs/base/rules/git-right-first-time.md +19 -0
- package/packs/base/rules/instances-by-index-identities-by-id.md +54 -0
- package/packs/base/rules/lookup-over-if-chains.md +49 -0
- package/packs/base/rules/making-line-first.md +14 -0
- package/packs/base/rules/open-items-tagged.md +17 -0
- package/packs/base/rules/plan-and-logs.md +22 -0
- package/packs/base/rules/references-use-anchors.md +19 -0
- package/packs/base/rules/refusals-are-judged.md +18 -0
- package/packs/base/rules/reuse-before-writing.md +15 -0
- package/packs/base/rules/secrets-never-committed.md +16 -0
- package/packs/base/rules/skill-writing.md +23 -0
- package/packs/base/rules/split-before-the-limit.md +14 -0
- package/packs/base/rules/subagent-dispatch.md +26 -0
- package/packs/base/rules/test-only-what-changed.md +17 -0
- package/packs/base/rules/test-the-template-once.md +22 -0
- package/packs/base/rules/untrusted-content-boundary.md +15 -0
- package/packs/base/skills/add-lesson-check/SKILL.md +26 -0
- package/packs/base/skills/fix-from-scan/SKILL.md +25 -0
- package/packs/base/skills/land-branch/SKILL.md +24 -0
- package/packs/base/skills/make-it-a-template/SKILL.md +23 -0
- package/packs/base/skills/pdf-to-md/SKILL.md +25 -0
- package/packs/base/skills/pick-tests/SKILL.md +20 -0
- package/packs/base/skills/pressure-test-skill/SKILL.md +23 -0
- package/packs/base/skills/prove-instances-identical/SKILL.md +37 -0
- package/packs/base/tools/shape-symmetry-selftest.mjs +66 -0
- package/packs/base/tools/shape-symmetry.mjs +178 -0
- package/packs/base/tools/test-verdict.mjs +75 -0
- package/packs/ci/checks/ci-permissions-stated.json +18 -0
- package/packs/ci/checks/ci-tools-pinned.json +14 -0
- package/packs/ci/pack.json +21 -0
- package/packs/ci/rules/ci-covers-what-ships.md +20 -0
- package/packs/ci/rules/generated-files-have-no-diff.md +15 -0
- package/packs/content-site/checks/captcha-is-not-constant.json +27 -0
- package/packs/content-site/checks/img-has-size.json +20 -0
- package/packs/content-site/checks/page-head-complete.json +26 -0
- package/packs/content-site/pack.json +22 -0
- package/packs/content-site/rules/content-has-one-source.md +23 -0
- package/packs/content-site/rules/media-is-sized.md +24 -0
- package/packs/content-site/rules/page-head-is-complete.md +26 -0
- package/packs/content-site/rules/public-forms-are-defended.md +27 -0
- package/packs/content-site/skills/publish-a-page/SKILL.md +21 -0
- package/packs/cpp/checks/cpp-clamp-before-cast.json +16 -0
- package/packs/cpp/checks/cpp-find-with-the-library.json +12 -0
- package/packs/cpp/checks/cpp-hardened-test-build.json +18 -0
- package/packs/cpp/checks/cpp-m-pi-not-standard.json +23 -0
- package/packs/cpp/checks/cpp-no-atoi.json +16 -0
- package/packs/cpp/checks/cpp-no-const-cast.json +16 -0
- package/packs/cpp/checks/cpp-no-float-loop-counter.json +16 -0
- package/packs/cpp/checks/cpp-no-getenv-in-product.json +22 -0
- package/packs/cpp/checks/cpp-no-mutable-global.json +20 -0
- package/packs/cpp/checks/cpp-no-mutable-local-static.json +23 -0
- package/packs/cpp/checks/cpp-no-unchecked-fwrite.json +17 -0
- package/packs/cpp/checks/cpp-no-using-namespace-in-header.json +19 -0
- package/packs/cpp/checks/cpp-no-zero-size-array.json +23 -0
- package/packs/cpp/checks/cpp-numbers-pi.json +16 -0
- package/packs/cpp/pack.json +22 -0
- package/packs/cpp/rules/cpp-absent-and-failed-are-types.md +24 -0
- package/packs/cpp/rules/cpp-builds-everywhere.md +26 -0
- package/packs/cpp/rules/cpp-faults-only-in-the-test-build.md +21 -0
- package/packs/cpp/rules/cpp-find-with-the-library.md +19 -0
- package/packs/cpp/rules/cpp-gates-share-one-reader.md +22 -0
- package/packs/cpp/rules/cpp-headers-declare.md +22 -0
- package/packs/cpp/rules/cpp-numbers-and-casts.md +22 -0
- package/packs/cpp/rules/cpp-repeats-become-templates.md +33 -0
- package/packs/cpp/rules/cpp-static-analysis-runs.md +22 -0
- package/packs/cpp/rules/cpp-thread-contracts-are-code.md +23 -0
- package/packs/cpp/skills/cpp-extract-template/SKILL.md +38 -0
- package/packs/docker/checks/alpine-with-native-build.json +13 -0
- package/packs/docker/checks/compose-db-needs-auth.json +14 -0
- package/packs/docker/checks/compose-image-pinned.json +14 -0
- package/packs/docker/checks/compose-no-hardcoded-ip.json +12 -0
- package/packs/docker/checks/compose-no-host-bind-for-data.json +18 -0
- package/packs/docker/checks/compose-no-plaintext-secret.json +13 -0
- package/packs/docker/checks/compose-no-swarm-ignored-keys.json +13 -0
- package/packs/docker/checks/compose-overlay-not-bridge.json +13 -0
- package/packs/docker/checks/compose-service-needs-healthcheck.json +11 -0
- package/packs/docker/checks/compose-service-needs-init.json +11 -0
- package/packs/docker/checks/copy-needs-chown-with-user.json +17 -0
- package/packs/docker/checks/copy-source-before-deps.json +13 -0
- package/packs/docker/checks/docker-exec-form.json +16 -0
- package/packs/docker/checks/dockerfile-needs-healthcheck.json +17 -0
- package/packs/docker/checks/dockerfile-needs-user.json +21 -0
- package/packs/docker/checks/dockerignore-has-the-basics.json +21 -0
- package/packs/docker/checks/gitattributes-forces-lf.json +17 -0
- package/packs/docker/checks/health-checks-nothing.json +25 -0
- package/packs/docker/checks/no-crlf-in-scripts.json +15 -0
- package/packs/docker/checks/no-latest-base.json +13 -0
- package/packs/docker/checks/no-secret-in-image.json +13 -0
- package/packs/docker/checks/no-sensitive-file-copy.json +13 -0
- package/packs/docker/checks/node-env-before-install.json +13 -0
- package/packs/docker/checks/npm-ci-not-install.json +13 -0
- package/packs/docker/pack.json +46 -0
- package/packs/docker/rules/compose-pinned-and-closed.md +21 -0
- package/packs/docker/rules/compose-swarm-safe.md +26 -0
- package/packs/docker/rules/docker-exec-form.md +19 -0
- package/packs/docker/rules/dockerfile-multistage.md +13 -0
- package/packs/docker/rules/dockerfile-production.md +25 -0
- package/packs/docker/skills/docker-diagnose/SKILL.md +23 -0
- package/packs/dynamic-data/checks/draft-on-the-server.json +27 -0
- package/packs/dynamic-data/checks/guard-does-its-job.json +28 -0
- package/packs/dynamic-data/checks/key-is-not-a-display-name.json +28 -0
- package/packs/dynamic-data/checks/no-code-from-data.json +29 -0
- package/packs/dynamic-data/checks/no-collection-from-request.json +27 -0
- package/packs/dynamic-data/checks/no-pipeline-from-stored-text.json +27 -0
- package/packs/dynamic-data/checks/no-regexp-from-stored-config.json +27 -0
- package/packs/dynamic-data/checks/no-template-from-stored-text.json +27 -0
- package/packs/dynamic-data/checks/save-takes-named-paths.json +27 -0
- package/packs/dynamic-data/pack.json +23 -0
- package/packs/dynamic-data/rules/a-list-is-a-saved-query.md +23 -0
- package/packs/dynamic-data/rules/definitions-are-validated-data.md +24 -0
- package/packs/dynamic-data/rules/every-dynamic-surface-has-a-boundary.md +29 -0
- package/packs/dynamic-data/rules/fields-have-owners.md +22 -0
- package/packs/dynamic-data/rules/imports-drop-nothing.md +26 -0
- package/packs/dynamic-data/rules/one-definition-many-surfaces.md +24 -0
- package/packs/dynamic-data/rules/one-fact-one-place.md +28 -0
- package/packs/dynamic-data/rules/rules-live-in-the-engine.md +29 -0
- package/packs/dynamic-data/rules/saves-are-patches.md +28 -0
- package/packs/dynamic-data/rules/tenant-costs-one-document.md +22 -0
- package/packs/dynamic-data/skills/design-a-definition/SKILL.md +24 -0
- package/packs/fastify/checks/api-routes-versioned.json +28 -0
- package/packs/fastify/checks/cookie-host-prefix.json +24 -0
- package/packs/fastify/checks/hijack-needs-try.json +28 -0
- package/packs/fastify/checks/no-cast-at-route-boundary.json +24 -0
- package/packs/fastify/checks/no-db-in-route-file.json +28 -0
- package/packs/fastify/checks/no-err-message-to-client.json +24 -0
- package/packs/fastify/checks/no-regexp-from-input.json +24 -0
- package/packs/fastify/checks/no-trust-proxy-true.json +25 -0
- package/packs/fastify/checks/one-error-body.json +26 -0
- package/packs/fastify/checks/origin-from-config-not-host.json +31 -0
- package/packs/fastify/checks/password-needs-slow-hash.json +30 -0
- package/packs/fastify/checks/sec-headers-present.json +28 -0
- package/packs/fastify/checks/secrets-compared-constant-time.json +24 -0
- package/packs/fastify/checks/sse-needs-error-listener.json +28 -0
- package/packs/fastify/checks/user-bytes-need-disposition.json +29 -0
- package/packs/fastify/pack.json +41 -0
- package/packs/fastify/rules/credentials-and-input.md +23 -0
- package/packs/fastify/rules/security-one-switch.md +28 -0
- package/packs/fastify/rules/streams-and-hijacks.md +22 -0
- package/packs/fastify/rules/tests-use-inject.md +13 -0
- package/packs/fastify/rules/three-layers.md +20 -0
- package/packs/fastify/rules/trust-config-not-headers.md +24 -0
- package/packs/full-stack/checks/no-express-no-vite.json +23 -0
- package/packs/full-stack/hooks/stack-guard.mjs +90 -0
- package/packs/full-stack/pack.json +76 -0
- package/packs/full-stack/rules/stack-is-fastify-and-nextjs.md +20 -0
- package/packs/go/checks/go-exec-result-ignored.json +15 -0
- package/packs/go/checks/go-unmarshal-error-ignored.json +15 -0
- package/packs/go/pack.json +21 -0
- package/packs/go/rules/go-errors-are-handled.md +22 -0
- package/packs/gpu-painter/checks/dawn-backends-and-validation.json +9 -0
- package/packs/gpu-painter/checks/dawn-no-spontaneous.json +10 -0
- package/packs/gpu-painter/checks/dawn-present-on-render-thread.json +17 -0
- package/packs/gpu-painter/checks/gpu-no-frame-stalls.json +12 -0
- package/packs/gpu-painter/checks/no-opengl-link.json +11 -0
- package/packs/gpu-painter/checks/no-opengl.json +13 -0
- package/packs/gpu-painter/hooks/browser-guard.py +196 -0
- package/packs/gpu-painter/pack.json +91 -0
- package/packs/gpu-painter/rules/dawn-build-and-shaders.md +27 -0
- package/packs/gpu-painter/rules/dawn-device-and-render-thread.md +26 -0
- package/packs/gpu-painter/rules/gpu-antialiasing.md +20 -0
- package/packs/gpu-painter/rules/gpu-blend-order.md +22 -0
- package/packs/gpu-painter/rules/gpu-bloom.md +20 -0
- package/packs/gpu-painter/rules/gpu-frame-budget.md +25 -0
- package/packs/gpu-painter/rules/gpu-frame-pacing-and-power.md +27 -0
- package/packs/gpu-painter/rules/gpu-frame-work.md +30 -0
- package/packs/gpu-painter/rules/gpu-golden-images.md +21 -0
- package/packs/gpu-painter/rules/gpu-hdr-and-tonemap.md +23 -0
- package/packs/gpu-painter/rules/gpu-picking-on-cpu.md +19 -0
- package/packs/gpu-painter/rules/gpu-render-lifecycle.md +25 -0
- package/packs/gpu-painter/rules/gpu-text-atlas.md +24 -0
- package/packs/gpu-painter/rules/gpu-travellers-from-snapshot.md +24 -0
- package/packs/gpu-painter/rules/hover-every-pressable.md +25 -0
- package/packs/gpu-painter/skills/gpu-capture/SKILL.md +15 -0
- package/packs/gpu-painter/skills/gpu-frame-bench/SKILL.md +14 -0
- package/packs/gpu-painter/skills/gpu-golden-check/SKILL.md +13 -0
- package/packs/gpu-painter/skills/gpu-golden-update/SKILL.md +16 -0
- package/packs/gpu-painter/skills/gpu-lifecycle-stress/SKILL.md +15 -0
- package/packs/gpu-painter/skills/hover-state/SKILL.md +33 -0
- package/packs/hook-proof/checks/hook-catch-must-not-allow.json +16 -0
- package/packs/hook-proof/checks/hook-command-no-pipe.json +16 -0
- package/packs/hook-proof/checks/hook-exit-1-does-not-block.json +17 -0
- package/packs/hook-proof/checks/hook-no-or-true.json +18 -0
- package/packs/hook-proof/checks/hook-refusal-on-stderr.json +17 -0
- package/packs/hook-proof/pack.json +38 -0
- package/packs/hook-proof/rules/a-refusal-is-exit-2.md +28 -0
- package/packs/hook-proof/skills/prove-a-hook/SKILL.md +21 -0
- package/packs/host-agent/checks/file-path-from-param.json +27 -0
- package/packs/host-agent/checks/integrity-check-optional.json +27 -0
- package/packs/host-agent/checks/quoted-value-into-config.json +24 -0
- package/packs/host-agent/checks/secret-on-argv.json +28 -0
- package/packs/host-agent/checks/ssh-verifies-host-key.json +27 -0
- package/packs/host-agent/checks/system-file-written-in-place.json +26 -0
- package/packs/host-agent/checks/tmp-path-predictable.json +27 -0
- package/packs/host-agent/pack.json +22 -0
- package/packs/host-agent/rules/root-on-other-machines.md +27 -0
- package/packs/html-ui/checks/email-html-escapes.json +25 -0
- package/packs/html-ui/checks/external-link-rel.json +21 -0
- package/packs/html-ui/checks/no-duplicate-escape.json +26 -0
- package/packs/html-ui/checks/no-inline-client-script.json +21 -0
- package/packs/html-ui/checks/no-inline-style.json +23 -0
- package/packs/html-ui/pack.json +33 -0
- package/packs/html-ui/rules/email-html-escapes.md +19 -0
- package/packs/html-ui/rules/server-html-escapes-everything.md +22 -0
- package/packs/http-api/checks/api-path-versioned.json +31 -0
- package/packs/http-api/checks/authz-from-request-body.json +26 -0
- package/packs/http-api/checks/client-calls-a-version.json +28 -0
- package/packs/http-api/checks/client-ip-not-leftmost-xff.json +28 -0
- package/packs/http-api/checks/cors-needs-origin.json +26 -0
- package/packs/http-api/checks/csp-not-switched-off.json +28 -0
- package/packs/http-api/checks/debug-route-not-shipped.json +26 -0
- package/packs/http-api/checks/encrypted-name-plaintext-value.json +26 -0
- package/packs/http-api/checks/err-text-stays-server-side.json +27 -0
- package/packs/http-api/checks/failure-is-not-empty.json +28 -0
- package/packs/http-api/checks/gate-is-not-a-todo.json +27 -0
- package/packs/http-api/checks/guard-fails-open.json +28 -0
- package/packs/http-api/checks/hmac-over-reserialised-body.json +26 -0
- package/packs/http-api/checks/jwt-verify-pins-algorithm.json +26 -0
- package/packs/http-api/checks/middleware-skips-without-user.json +26 -0
- package/packs/http-api/checks/next-api-route-versioned.json +47 -0
- package/packs/http-api/checks/no-security-off-switch.json +28 -0
- package/packs/http-api/checks/oauth-state-signed.json +26 -0
- package/packs/http-api/checks/one-time-code-compared-raw.json +26 -0
- package/packs/http-api/checks/query-cast-is-not-validation.json +28 -0
- package/packs/http-api/checks/queue-action-from-client.json +26 -0
- package/packs/http-api/checks/rate-limit-one-module.json +28 -0
- package/packs/http-api/checks/role-checked-in-one-guard.json +27 -0
- package/packs/http-api/checks/route-body-needs-schema.json +31 -0
- package/packs/http-api/checks/route-scopes-to-the-caller.json +31 -0
- package/packs/http-api/checks/secret-compared-constant-time-any.json +28 -0
- package/packs/http-api/checks/secret-in-job-record.json +27 -0
- package/packs/http-api/checks/server-fetches-tenant-url.json +30 -0
- package/packs/http-api/checks/short-code-needs-limit.json +26 -0
- package/packs/http-api/checks/user-url-through-safe-fetch.json +28 -0
- package/packs/http-api/checks/webhook-dedupes-event-id.json +30 -0
- package/packs/http-api/pack.json +45 -0
- package/packs/http-api/rules/adapters-one-db-gateway.md +18 -0
- package/packs/http-api/rules/apis-are-versioned.md +27 -0
- package/packs/http-api/rules/credentials-handled-safely.md +22 -0
- package/packs/http-api/rules/handlers-own-the-work.md +17 -0
- package/packs/http-api/rules/health-and-correlation.md +17 -0
- package/packs/http-api/rules/one-error-contract.md +17 -0
- package/packs/http-api/rules/routes-are-thin.md +17 -0
- package/packs/http-api/rules/routes-scope-to-the-caller.md +26 -0
- package/packs/http-api/rules/routes-validate-and-answer.md +25 -0
- package/packs/http-api/skills/change-an-api/SKILL.md +20 -0
- package/packs/http-api/skills/secure-a-route/SKILL.md +21 -0
- package/packs/instrument-shell/checks/no-raw-struct-blob.json +23 -0
- package/packs/instrument-shell/pack.json +22 -0
- package/packs/instrument-shell/rules/fold-keeps-every-route.md +24 -0
- package/packs/instrument-shell/rules/quiet-announces-itself.md +22 -0
- package/packs/instrument-shell/rules/render-the-extremes.md +25 -0
- package/packs/instrument-shell/rules/seams-are-declared.md +27 -0
- package/packs/instrument-shell/rules/session-blob-append-only.md +25 -0
- package/packs/instrument-shell/skills/gates-from-commit-one/SKILL.md +20 -0
- package/packs/instrument-shell/skills/hit-the-painted-control/SKILL.md +18 -0
- package/packs/js-ts/checks/async-callback-unguarded.json +26 -0
- package/packs/js-ts/checks/background-loop-needs-stop.json +28 -0
- package/packs/js-ts/checks/child-process-error-handler.json +28 -0
- package/packs/js-ts/checks/entry-registers-shutdown.json +31 -0
- package/packs/js-ts/checks/fetch-needs-timeout.json +30 -0
- package/packs/js-ts/checks/job-only-in-memory.json +28 -0
- package/packs/js-ts/checks/json-only-through-helper.json +29 -0
- package/packs/js-ts/checks/line-under-200-chars.json +34 -0
- package/packs/js-ts/checks/localhost-default-in-server.json +29 -0
- package/packs/js-ts/checks/no-any.json +27 -0
- package/packs/js-ts/checks/no-cast-escape-hatches.json +24 -0
- package/packs/js-ts/checks/no-console-in-app.json +31 -0
- package/packs/js-ts/checks/no-dynamic-import-node-builtin.json +25 -0
- package/packs/js-ts/checks/no-inline-binary.json +20 -0
- package/packs/js-ts/checks/no-inline-zod-outside-schemas.json +27 -0
- package/packs/js-ts/checks/no-local-sleep.json +25 -0
- package/packs/js-ts/checks/no-nested-ternary.json +20 -0
- package/packs/js-ts/checks/no-secret-in-log.json +24 -0
- package/packs/js-ts/checks/no-shell-string-interpolation.json +24 -0
- package/packs/js-ts/checks/no-swallowed-errors.json +25 -0
- package/packs/js-ts/checks/no-ts-enum.json +20 -0
- package/packs/js-ts/checks/process-env-only-in-config.json +31 -0
- package/packs/js-ts/checks/race-leaves-work-running.json +23 -0
- package/packs/js-ts/checks/reject-as-catch-all-exists.json +24 -0
- package/packs/js-ts/checks/secret-has-no-fallback.json +24 -0
- package/packs/js-ts/checks/secret-needs-crypto-random.json +24 -0
- package/packs/js-ts/checks/server-close-awaited.json +27 -0
- package/packs/js-ts/checks/session-user-typed-once.json +24 -0
- package/packs/js-ts/checks/switch-is-a-table.json +24 -0
- package/packs/js-ts/checks/test-imports-the-source.json +19 -0
- package/packs/js-ts/checks/test-name-says-behaviour.json +16 -0
- package/packs/js-ts/checks/tsconfig-flags.json +21 -0
- package/packs/js-ts/checks/void-needs-catch.json +24 -0
- package/packs/js-ts/checks/zod-string-needs-max.json +25 -0
- package/packs/js-ts/checks/zod-v4-formats.json +23 -0
- package/packs/js-ts/pack.json +84 -0
- package/packs/js-ts/rules/await-handled-at-a-boundary.md +66 -0
- package/packs/js-ts/rules/env-through-config.md +36 -0
- package/packs/js-ts/rules/errors-never-swallowed.md +33 -0
- package/packs/js-ts/rules/files-under-300-lines.md +18 -0
- package/packs/js-ts/rules/guard-clauses-over-nesting.md +34 -0
- package/packs/js-ts/rules/js-repeats-become-templates.md +26 -0
- package/packs/js-ts/rules/json-only-through-one-helper.md +62 -0
- package/packs/js-ts/rules/named-constants-not-magic-numbers.md +34 -0
- package/packs/js-ts/rules/no-any.md +34 -0
- package/packs/js-ts/rules/no-console.md +30 -0
- package/packs/js-ts/rules/no-floating-promises.md +31 -0
- package/packs/js-ts/rules/no-param-mutation.md +28 -0
- package/packs/js-ts/rules/no-unsafe-assertions.md +30 -0
- package/packs/js-ts/rules/one-logger.md +24 -0
- package/packs/js-ts/rules/outbound-calls-have-a-limit.md +20 -0
- package/packs/js-ts/rules/parallel-independent-awaits.md +29 -0
- package/packs/js-ts/rules/process-lifecycle.md +47 -0
- package/packs/js-ts/rules/schema-single-source-of-truth.md +36 -0
- package/packs/js-ts/rules/secrets-stay-secret.md +22 -0
- package/packs/js-ts/rules/small-functions.md +20 -0
- package/packs/js-ts/rules/test-names-describe-behavior.md +28 -0
- package/packs/js-ts/rules/tests-can-fail.md +19 -0
- package/packs/js-ts/rules/tsconfig-strict.md +32 -0
- package/packs/js-ts/rules/typed-exports.md +27 -0
- package/packs/js-ts/rules/types-once-at-the-edge.md +18 -0
- package/packs/js-ts/rules/unions-over-enums.md +29 -0
- package/packs/js-ts/rules/zod-at-route-boundaries.md +40 -0
- package/packs/midi/checks/active-sensing-no-pulse.json +24 -0
- package/packs/midi/checks/clock-not-at-sample-zero.json +23 -0
- package/packs/midi/checks/midi-realtime-first.json +27 -0
- package/packs/midi/checks/no-tempo-writeback.json +23 -0
- package/packs/midi/checks/position-not-integrated.json +25 -0
- package/packs/midi/checks/stub-playhead-advances.json +27 -0
- package/packs/midi/checks/sysex-length-literal.json +23 -0
- package/packs/midi/checks/sysex-not-on-audio.json +24 -0
- package/packs/midi/checks/sysex-survives-realtime.json +27 -0
- package/packs/midi/pack.json +22 -0
- package/packs/midi/rules/clock-is-a-pulse-stream.md +30 -0
- package/packs/midi/rules/imports-count-every-loss.md +25 -0
- package/packs/midi/rules/measure-the-clock-in-audio.md +30 -0
- package/packs/midi/rules/sync-is-a-mode.md +29 -0
- package/packs/midi/rules/sysex-is-a-record.md +29 -0
- package/packs/midi/skills/clock-probe/SKILL.md +23 -0
- package/packs/midi/skills/clock-probe/clock-law.md +417 -0
- package/packs/midi/skills/does-it-sync/SKILL.md +19 -0
- package/packs/mongo/checks/bulk-over-many.json +28 -0
- package/packs/mongo/checks/created-at-immutable.json +25 -0
- package/packs/mongo/checks/driver-outside-gateway.json +24 -0
- package/packs/mongo/checks/key-lookup-is-hashed.json +24 -0
- package/packs/mongo/checks/mongoclient-cached-and-named.json +34 -0
- package/packs/mongo/checks/mongoclient-outside-gateway.json +24 -0
- package/packs/mongo/checks/no-count-plus-one-ids.json +25 -0
- package/packs/mongo/checks/no-db-write-in-loop.json +25 -0
- package/packs/mongo/checks/no-drop-in-code.json +27 -0
- package/packs/mongo/checks/no-empty-deletemany.json +26 -0
- package/packs/mongo/checks/no-find-reads.json +26 -0
- package/packs/mongo/checks/no-input-spread-into-write.json +24 -0
- package/packs/mongo/checks/no-mongoose.json +23 -0
- package/packs/mongo/checks/no-negation-delete.json +26 -0
- package/packs/mongo/checks/no-non-null-after-findone.json +25 -0
- package/packs/mongo/checks/objectid-equals.json +26 -0
- package/packs/mongo/checks/update-then-reread.json +24 -0
- package/packs/mongo/checks/watch-not-poll.json +25 -0
- package/packs/mongo/pack.json +52 -0
- package/packs/mongo/rules/deletes-name-what-dies.md +21 -0
- package/packs/mongo/rules/driver-only-in-gateway.md +26 -0
- package/packs/mongo/rules/keys-hashed-input-picked.md +21 -0
- package/packs/mongo/rules/one-client-one-pool.md +32 -0
- package/packs/mongo/rules/reads-aggregate-writes-bulk.md +25 -0
- package/packs/mongo/rules/writes-are-atomic.md +27 -0
- package/packs/multi-tenant/checks/role-sees-all-tenants.json +26 -0
- package/packs/multi-tenant/checks/tenant-filter-from-url.json +25 -0
- package/packs/multi-tenant/pack.json +22 -0
- package/packs/multi-tenant/rules/no-role-crosses-a-tenant.md +21 -0
- package/packs/multi-tenant/skills/prove-tenant-isolation/SKILL.md +19 -0
- package/packs/nginx/checks/modsec-no-blanket-off.json +16 -0
- package/packs/nginx/checks/nginx-csp-no-unsafe.json +15 -0
- package/packs/nginx/checks/nginx-headers-always.json +15 -0
- package/packs/nginx/checks/nginx-keepalive-http11.json +20 -0
- package/packs/nginx/checks/nginx-logs-to-stdout.json +15 -0
- package/packs/nginx/checks/nginx-no-crlf.json +17 -0
- package/packs/nginx/checks/nginx-resolver-ttl.json +19 -0
- package/packs/nginx/pack.json +43 -0
- package/packs/nginx/rules/modsecurity-tuning.md +22 -0
- package/packs/nginx/rules/nginx-production.md +26 -0
- package/packs/nginx/skills/waf-rollout/SKILL.md +20 -0
- package/packs/python/checks/py-no-bare-except.json +18 -0
- package/packs/python/checks/py-no-eval.json +18 -0
- package/packs/python/checks/py-no-mutable-default.json +18 -0
- package/packs/python/checks/py-no-shell-true.json +18 -0
- package/packs/python/checks/py-no-star-import.json +18 -0
- package/packs/python/checks/py-no-swallowed-exception.json +18 -0
- package/packs/python/checks/py-none-by-is.json +18 -0
- package/packs/python/checks/py-open-with-with.json +18 -0
- package/packs/python/checks/py-requests-timeout.json +18 -0
- package/packs/python/checks/py-subprocess-output-checked.json +18 -0
- package/packs/python/checks/py-yaml-safe-load.json +18 -0
- package/packs/python/pack.json +26 -0
- package/packs/python/rules/python-errors-and-resources.md +26 -0
- package/packs/python/rules/python-repeats-become-templates.md +27 -0
- package/packs/python/skills/python-extract-template/SKILL.md +35 -0
- package/packs/react/checks/dialog-needs-role.json +28 -0
- package/packs/react/checks/effect-not-for-derived-state.json +24 -0
- package/packs/react/checks/icon-button-needs-name.json +24 -0
- package/packs/react/checks/label-needs-a-field.json +24 -0
- package/packs/react/checks/ui-failed-fetch-says-so.json +23 -0
- package/packs/react/checks/ui-ok-branch-has-an-else.json +23 -0
- package/packs/react/pack.json +20 -0
- package/packs/react/rules/react-accessible-controls.md +20 -0
- package/packs/react/rules/react-state-and-effects.md +23 -0
- package/packs/reverse-engineering/checks/ear-constant-tagged.json +23 -0
- package/packs/reverse-engineering/checks/no-default-on-distrust.json +24 -0
- package/packs/reverse-engineering/checks/no-rom-table-literal.json +29 -0
- package/packs/reverse-engineering/checks/prose-never-decides.json +22 -0
- package/packs/reverse-engineering/hooks/firmware-out-of-git.mjs +49 -0
- package/packs/reverse-engineering/pack.json +35 -0
- package/packs/reverse-engineering/rules/a-negative-names-what-was-scanned.md +19 -0
- package/packs/reverse-engineering/rules/account-every-term.md +20 -0
- package/packs/reverse-engineering/rules/addresses-name-their-space.md +21 -0
- package/packs/reverse-engineering/rules/every-law-has-a-source.md +18 -0
- package/packs/reverse-engineering/rules/findings-are-withdrawn-in-place.md +17 -0
- package/packs/reverse-engineering/rules/firmware-stays-out.md +18 -0
- package/packs/reverse-engineering/rules/names-before-code.md +19 -0
- package/packs/reverse-engineering/rules/reproduction-or-original.md +18 -0
- package/packs/reverse-engineering/rules/two-sources-before-naming.md +21 -0
- package/packs/reverse-engineering/skills/bank-census/SKILL.md +18 -0
- package/packs/reverse-engineering/skills/gather-sources/SKILL.md +21 -0
- package/packs/reverse-engineering/skills/menu-map/SKILL.md +28 -0
- package/packs/reverse-engineering/skills/names-first/SKILL.md +41 -0
- package/packs/reverse-engineering/skills/re-deliverables/SKILL.md +21 -0
- package/packs/reverse-engineering/skills/tripwire-the-law/SKILL.md +19 -0
- package/packs/reverse-engineering/tools/lib/unwrap.mjs +115 -0
- package/packs/reverse-engineering/tools/names-sweep.mjs +264 -0
- package/packs/shell/checks/sh-mktemp.json +18 -0
- package/packs/shell/checks/sh-no-backticks.json +18 -0
- package/packs/shell/checks/sh-no-eval.json +18 -0
- package/packs/shell/checks/sh-no-parse-ls.json +18 -0
- package/packs/shell/checks/sh-no-pipe-to-shell.json +18 -0
- package/packs/shell/checks/sh-no-program-in-heredoc.json +18 -0
- package/packs/shell/checks/sh-quote-arguments.json +18 -0
- package/packs/shell/checks/sh-rm-guarded.json +18 -0
- package/packs/shell/checks/sh-strict-mode.json +20 -0
- package/packs/shell/pack.json +28 -0
- package/packs/shell/rules/shell-repeats-become-templates.md +23 -0
- package/packs/shell/rules/shell-strict-and-quoted.md +27 -0
- package/packs/shell/skills/shell-extract-template/SKILL.md +32 -0
- package/packs/shell-hooks/checks/gnu-only-in-shell.json +18 -0
- package/packs/shell-hooks/checks/hook-command-anchored.json +12 -0
- package/packs/shell-hooks/checks/hook-json-by-tool.json +18 -0
- package/packs/shell-hooks/checks/no-bash-c-with-variable.json +20 -0
- package/packs/shell-hooks/pack.json +36 -0
- package/packs/shell-hooks/rules/hooks-portable-anchored-quoted.md +26 -0
- package/packs/sound-design/checks/audio-seed-fixed.json +23 -0
- package/packs/sound-design/checks/mix-is-a-crossfade.json +30 -0
- package/packs/sound-design/checks/no-hash-in-the-signal.json +30 -0
- package/packs/sound-design/checks/no-literal-key-anchor.json +30 -0
- package/packs/sound-design/checks/test-compares-a-function-with-itself.json +22 -0
- package/packs/sound-design/pack.json +22 -0
- package/packs/sound-design/rules/algorithms-are-data.md +26 -0
- package/packs/sound-design/rules/meter-before-engine.md +27 -0
- package/packs/sound-design/rules/neutral-is-exact.md +26 -0
- package/packs/sound-design/rules/test-off-the-easy-point.md +28 -0
- package/packs/sound-design/rules/unreachable-is-said.md +25 -0
- package/packs/sound-design/rules/waveforms-and-octaves.md +24 -0
- package/packs/sound-design/skills/choose-observable/SKILL.md +18 -0
- package/packs/sound-design/skills/measure-a-law/SKILL.md +18 -0
- package/packs/sound-design/skills/measure-reverb/SKILL.md +19 -0
- package/packs/sound-design/skills/spread-probe/SKILL.md +18 -0
- package/packs/stellix/checks/no-keyboard-focus.json +12 -0
- package/packs/stellix/checks/one-seeded-random.json +16 -0
- package/packs/stellix/checks/world-never-includes-painter.json +12 -0
- package/packs/stellix/checks/world-no-libm.json +15 -0
- package/packs/stellix/checks/world-no-unordered.json +10 -0
- package/packs/stellix/hooks/no-shipped-images.mjs +88 -0
- package/packs/stellix/pack.json +61 -0
- package/packs/stellix/rules/stellix-deterministic-world.md +29 -0
- package/packs/stellix/rules/stellix-reset-generated.md +24 -0
- package/packs/stellix/rules/stellix-world-snapshot.md +27 -0
- package/packs/stellix/rules/world-continuous-collision.md +26 -0
- package/packs/stellix/rules/world-fp-determinism.md +28 -0
- package/packs/stored-text/checks/no-raw-html-from-data.json +31 -0
- package/packs/stored-text/checks/stored-text-libs-only-in-renderer.json +31 -0
- package/packs/stored-text/checks/stored-text-renderer-complete.json +24 -0
- package/packs/stored-text/checks/stored-text-through-renderer.json +25 -0
- package/packs/stored-text/pack.json +41 -0
- package/packs/stored-text/rules/stored-text-renders-once.md +26 -0
- package/packs/stored-text/skills/render-stored-text/SKILL.md +24 -0
- package/packs/synth-creator/checks/timing-from-synthcore.json +24 -0
- package/packs/synth-creator/checks/ui-drawn-in-code.json +23 -0
- package/packs/synth-creator/hooks/build-guard.mjs +232 -0
- package/packs/synth-creator/hooks/build-sweep.mjs +166 -0
- package/packs/synth-creator/hooks/frozen-files.mjs +63 -0
- package/packs/synth-creator/hooks/idle-wake.mjs +90 -0
- package/packs/synth-creator/hooks/protect-vendor.mjs +174 -0
- package/packs/synth-creator/hooks/spec-lock.mjs +117 -0
- package/packs/synth-creator/hooks/stage-guard.mjs +50 -0
- package/packs/synth-creator/hooks/time-guard.mjs +292 -0
- package/packs/synth-creator/hooks/user-asks.mjs +165 -0
- package/packs/synth-creator/pack.json +136 -0
- package/packs/synth-creator/rules/copy-trees-read-only.md +25 -0
- package/packs/synth-creator/rules/debug-by-measurement.md +20 -0
- package/packs/synth-creator/rules/done-means-fresh-evidence.md +18 -0
- package/packs/synth-creator/rules/hooks-and-gates.md +21 -0
- package/packs/synth-creator/rules/long-work-in-the-background.md +16 -0
- package/packs/synth-creator/rules/timing-from-synthcore.md +16 -0
- package/packs/synth-creator/skills/build-step/SKILL.md +125 -0
- package/packs/synth-creator/skills/build-through-the-queue/SKILL.md +19 -0
- package/packs/synth-creator/tools/freeze.mjs +36 -0
- package/packs/tui/checks/tui-entry-restores-terminal.json +27 -0
- package/packs/tui/checks/tui-gates-on-tty.json +25 -0
- package/packs/tui/checks/tui-no-ris-reset.json +22 -0
- package/packs/tui/checks/tui-resize-listener-removed.json +26 -0
- package/packs/tui/checks/tui-width-is-state.json +33 -0
- package/packs/tui/pack.json +44 -0
- package/packs/tui/rules/tui-resize-and-screen.md +25 -0
- package/packs/tui/skills/build-tui/SKILL.md +21 -0
- package/packs/ui-craft/checks/ui-input-needs-autocomplete.json +23 -0
- package/packs/ui-craft/checks/ui-intl-for-dates.json +21 -0
- package/packs/ui-craft/checks/ui-no-ai-palette.json +22 -0
- package/packs/ui-craft/checks/ui-no-animate-layout.json +22 -0
- package/packs/ui-craft/checks/ui-no-assistant-palette.json +23 -0
- package/packs/ui-craft/checks/ui-no-bounce-easing.json +22 -0
- package/packs/ui-craft/checks/ui-no-custom-cursor.json +22 -0
- package/packs/ui-craft/checks/ui-no-emoji-as-ui.json +22 -0
- package/packs/ui-craft/checks/ui-no-empty-image.json +21 -0
- package/packs/ui-craft/checks/ui-no-eyebrow.json +21 -0
- package/packs/ui-craft/checks/ui-no-furniture-text.json +22 -0
- package/packs/ui-craft/checks/ui-no-gradient-text.json +22 -0
- package/packs/ui-craft/checks/ui-no-index-numbering.json +21 -0
- package/packs/ui-craft/checks/ui-no-lorem.json +22 -0
- package/packs/ui-craft/checks/ui-no-marketing-buzzword.json +22 -0
- package/packs/ui-craft/checks/ui-no-paste-block.json +21 -0
- package/packs/ui-craft/checks/ui-no-placeholder-names.json +21 -0
- package/packs/ui-craft/checks/ui-no-scroll-hijack.json +21 -0
- package/packs/ui-craft/checks/ui-no-side-tab.json +21 -0
- package/packs/ui-craft/checks/ui-no-stock-labels.json +22 -0
- package/packs/ui-craft/checks/ui-no-transition-all.json +22 -0
- package/packs/ui-craft/checks/ui-no-uppercase-table-header.json +21 -0
- package/packs/ui-craft/checks/ui-no-zebra-rows.json +22 -0
- package/packs/ui-craft/checks/ui-no-zoom-lock.json +21 -0
- package/packs/ui-craft/pack.json +43 -0
- package/packs/ui-craft/rules/apps-are-not-pages.md +26 -0
- package/packs/ui-craft/rules/data-tells-the-truth.md +26 -0
- package/packs/ui-craft/rules/dates-and-numbers.md +18 -0
- package/packs/ui-craft/rules/forms-never-fight.md +22 -0
- package/packs/ui-craft/rules/interface-copy.md +26 -0
- package/packs/ui-craft/rules/motion-is-rare.md +31 -0
- package/packs/ui-craft/rules/no-generated-look.md +37 -0
- package/packs/ui-craft/rules/page-holds-its-frame.md +28 -0
- package/packs/ui-craft/rules/page-proved-rendered.md +19 -0
- package/packs/ui-craft/rules/pictures-do-a-job.md +25 -0
- package/packs/ui-craft/rules/pointer-feedback.md +28 -0
- package/packs/ui-craft/rules/screen-answers-one-question.md +24 -0
- package/packs/ui-craft/rules/survives-real-data.md +23 -0
- package/packs/ui-craft/rules/touch-and-small-screens.md +19 -0
- package/packs/ui-craft/rules/type-space-colour.md +26 -0
- package/packs/ui-craft/rules/url-holds-the-state.md +19 -0
- package/packs/ui-craft/skills/app-screen/SKILL.md +33 -0
- package/packs/ui-craft/skills/build-from-reference/SKILL.md +28 -0
- package/packs/ui-craft/skills/chart-choice/SKILL.md +34 -0
- package/packs/ui-craft/skills/hover-state/SKILL.md +28 -0
- package/packs/ui-craft/skills/page-critique/SKILL.md +33 -0
- package/packs/ui-craft/skills/prove-page/SKILL.md +23 -0
- package/packs/ui-craft/skills/redesign-page/SKILL.md +19 -0
- package/packs/ui-craft/skills/ui-code-review/SKILL.md +22 -0
- package/packs/ui-craft/skills/write-the-page/SKILL.md +21 -0
- package/packs/ui-craft/tools/page-measure.mjs +41 -0
- package/packs/web/checks/a11y-img-needs-alt.json +26 -0
- package/packs/web/checks/a11y-no-bare-outline-none.json +21 -0
- package/packs/web/checks/a11y-no-clickable-div.json +26 -0
- package/packs/web/checks/a11y-no-positive-tabindex.json +26 -0
- package/packs/web/checks/client-no-api-key.json +29 -0
- package/packs/web/checks/client-no-browser-global-at-module-scope.json +28 -0
- package/packs/web/checks/client-no-server-import.json +31 -0
- package/packs/web/checks/client-no-window-location-nav.json +28 -0
- package/packs/web/checks/css-no-inline-style.json +30 -0
- package/packs/web/checks/ds-pages-compose-primitives.json +28 -0
- package/packs/web/checks/key-from-index.json +23 -0
- package/packs/web/checks/prodbuild-no-cdn-runtime-deps.json +21 -0
- package/packs/web/checks/prodbuild-no-dev-flags.json +21 -0
- package/packs/web/checks/prodbuild-no-remote-fonts.json +22 -0
- package/packs/web/checks/rcss-button-cursor.json +30 -0
- package/packs/web/checks/rcss-no-100vw.json +21 -0
- package/packs/web/checks/rcss-no-fixed-wide-width.json +21 -0
- package/packs/web/checks/rcss-viewport-meta.json +28 -0
- package/packs/web/checks/secret-not-in-web-storage.json +25 -0
- package/packs/web/checks/tw-no-raw-hex-in-markup.json +34 -0
- package/packs/web/checks/wp-hero-not-lazy.json +27 -0
- package/packs/web/checks/wp-img-needs-dimensions.json +26 -0
- package/packs/web/pack.json +73 -0
- package/packs/web/rules/accessibility.md +26 -0
- package/packs/web/rules/client-boundaries.md +23 -0
- package/packs/web/rules/production-build.md +22 -0
- package/packs/web/rules/secrets-not-in-the-browser.md +18 -0
- package/packs/web/rules/styles-live-in-stylesheets.md +23 -0
- package/packs/web/rules/tailwind-v4.md +23 -0
- package/packs/web/rules/ui-primitives-one-module.md +30 -0
- package/packs/web/rules/web-performance.md +21 -0
- package/packs/web/skills/design-direction/SKILL.md +30 -0
- package/packs/web/skills/design-review/SKILL.md +28 -0
- package/packs/web/skills/pick-rendering-mode/SKILL.md +21 -0
- package/packs/web/skills/preflight-build/SKILL.md +23 -0
- package/packs/web/skills/seo-audit/SKILL.md +22 -0
- package/packs/websocket/checks/no-token-in-query.json +26 -0
- package/packs/websocket/checks/stale-socket-deletes-new-entry.json +25 -0
- package/packs/websocket/checks/ws-identity-from-message.json +26 -0
- package/packs/websocket/pack.json +21 -0
- package/packs/websocket/rules/identity-comes-from-the-connection.md +24 -0
- package/packs/writing/checks/ascii-no-em-dash.json +17 -0
- package/packs/writing/checks/no-copula-dodging.json +18 -0
- package/packs/writing/checks/no-dramatic-colon.json +18 -0
- package/packs/writing/checks/no-not-x-but-y.json +18 -0
- package/packs/writing/checks/no-participial-opener.json +18 -0
- package/packs/writing/checks/no-pseudo-wisdom.json +18 -0
- package/packs/writing/checks/no-slop-words.json +18 -0
- package/packs/writing/checks/no-stock-connectors.json +18 -0
- package/packs/writing/checks/no-time-or-date.json +27 -0
- package/packs/writing/checks/no-trailing-ing.json +18 -0
- package/packs/writing/checks/no-vague-attribution.json +18 -0
- package/packs/writing/pack.json +43 -0
- package/packs/writing/rules/ascii-no-em-dash.md +21 -0
- package/packs/writing/rules/cut-the-padding.md +20 -0
- package/packs/writing/rules/direct-voice.md +22 -0
- package/packs/writing/rules/no-cargo-cult.md +16 -0
- package/packs/writing/rules/no-scaffolding.md +19 -0
- package/packs/writing/rules/no-stock-language.md +27 -0
- package/packs/writing/rules/no-time-or-date.md +18 -0
- package/packs/writing/rules/rhythm-like-talk.md +20 -0
- package/packs/writing/rules/write-from-your-own-corner.md +20 -0
- package/packs/writing/skills/argument-post/SKILL.md +28 -0
- package/packs/writing/skills/humanize/SKILL.md +28 -0
- package/packs/writing/skills/launch-post/SKILL.md +38 -0
- package/packs/writing/skills/pick-subreddit/SKILL.md +69 -0
- package/packs/writing/skills/post-voice/SKILL.md +22 -0
- package/packs/writing/skills/reddit-post/SKILL.md +63 -0
- package/packs/writing/skills/reddit-title/SKILL.md +23 -0
- package/packs/writing/skills/reply-moves/SKILL.md +40 -0
- package/packs/writing/skills/reply-stance/SKILL.md +23 -0
- package/packs/writing/skills/should-i-reply/SKILL.md +21 -0
- package/packs/zod/hooks/schemas-only.mjs +53 -0
- package/packs/zod/pack.json +44 -0
- package/packs/zod/rules/env-shapes-only.md +14 -0
- package/packs/zod/rules/zod-4-schemas.md +14 -0
- package/profiles/stellix.layout.json +315 -0
- package/profiles/sub37.layout.json +247 -0
- package/prompts/scan-review.md +40 -0
- package/prompts/survey.md +82 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cpp",
|
|
3
|
+
"description": "Any C++ project that is not a synth: universal engineering and the cpp pack, with what is repeated made one template.",
|
|
4
|
+
"packs": {
|
|
5
|
+
"always": [
|
|
6
|
+
"base",
|
|
7
|
+
"writing",
|
|
8
|
+
"hook-proof"
|
|
9
|
+
],
|
|
10
|
+
"choose": [
|
|
11
|
+
"cpp",
|
|
12
|
+
"docker",
|
|
13
|
+
"shell-hooks",
|
|
14
|
+
"python",
|
|
15
|
+
"shell",
|
|
16
|
+
"ci",
|
|
17
|
+
"go",
|
|
18
|
+
"reverse-engineering",
|
|
19
|
+
"midi",
|
|
20
|
+
"sound-design"
|
|
21
|
+
],
|
|
22
|
+
"default": [
|
|
23
|
+
"cpp"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"layout": {
|
|
27
|
+
"folders": {
|
|
28
|
+
"docs": {
|
|
29
|
+
"path": "docs",
|
|
30
|
+
"purpose": "spec, laws, licences, work orders, decisions"
|
|
31
|
+
},
|
|
32
|
+
"src": {
|
|
33
|
+
"path": "src",
|
|
34
|
+
"purpose": "all source code, only inside the subfolders below"
|
|
35
|
+
},
|
|
36
|
+
"tests": {
|
|
37
|
+
"path": "tests",
|
|
38
|
+
"purpose": "unit tests, gates with planted faults, golden files"
|
|
39
|
+
},
|
|
40
|
+
"tools": {
|
|
41
|
+
"path": "tools",
|
|
42
|
+
"purpose": "scripts and research tooling (not shipped)"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"kinds": {
|
|
46
|
+
"tests": {
|
|
47
|
+
"what": "tests, gates with planted faults, golden renders",
|
|
48
|
+
"in": "tests",
|
|
49
|
+
"concepts": [
|
|
50
|
+
"tests"
|
|
51
|
+
],
|
|
52
|
+
"files": [
|
|
53
|
+
"**/*_test.*",
|
|
54
|
+
"**/*Test.cpp",
|
|
55
|
+
"**/*Tests.cpp",
|
|
56
|
+
"**/test_*.*",
|
|
57
|
+
"**/*.test.*"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"docs": {
|
|
61
|
+
"what": "the spec, laws.md, decisions, research, work orders",
|
|
62
|
+
"in": "docs",
|
|
63
|
+
"concepts": [
|
|
64
|
+
"docs-folder"
|
|
65
|
+
],
|
|
66
|
+
"files": [
|
|
67
|
+
"**/laws.md",
|
|
68
|
+
"**/*-spec.md"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"tools": {
|
|
72
|
+
"what": "scripts and research tools that never ship",
|
|
73
|
+
"in": "tools"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"preamble": {
|
|
78
|
+
"always": [
|
|
79
|
+
"Ask the user before inventing a new folder. A new folder goes into `.claude/layout.json` first.",
|
|
80
|
+
"When a hook, check or guard blocks work that is correct, stop and report its exact message. A blocking hook is a red check: fix the hook first, with a selftest, then continue.",
|
|
81
|
+
"When a command is refused or fails, the step fails loudly. Never report a refused write or a failed command as done.",
|
|
82
|
+
"claude-packs (`~/projects/claude-packs`) is the source of truth for every rule, check, hook and skill this project's configuration installs. A fix to one of them is made there with its test, committed, pushed and released as a new version, then taken in with `npx --no-install @thedecipherist/claude-packs update`. A project edits its installed copy only to try a fix before it goes into the kit."
|
|
83
|
+
],
|
|
84
|
+
"never": [
|
|
85
|
+
"Create source files outside these folders, or put a kind of thing anywhere but its place. The folder-law and placement-law hooks refuse both.",
|
|
86
|
+
"Edit files in `.claude/rules`, `.claude/checks` or `.claude/hooks` to get past a block. Fix the code, or ask the user to change the law.",
|
|
87
|
+
"Route around a block: no override variables, no writing through the shell after a refusal, no parking files in a scratchpad, no putting new code into an unrelated existing file.",
|
|
88
|
+
"Point at a document by line number. Cite a fixed anchor (`{#id}`) or a symbol name; lines move."
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"sourceFiles": "\\.(?:c|cc|cpp|cxx|h|hh|hpp|mm)$"
|
|
92
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "full-stack",
|
|
3
|
+
"description": "A web service: a Fastify API and a Next.js web app in one repo, Zod 4 schemas in one shared folder, one database gateway, one error contract.",
|
|
4
|
+
"packs": {
|
|
5
|
+
"always": [
|
|
6
|
+
"base",
|
|
7
|
+
"full-stack",
|
|
8
|
+
"http-api",
|
|
9
|
+
"fastify",
|
|
10
|
+
"zod",
|
|
11
|
+
"docker",
|
|
12
|
+
"writing",
|
|
13
|
+
"hook-proof"
|
|
14
|
+
],
|
|
15
|
+
"choose": [
|
|
16
|
+
"js-ts",
|
|
17
|
+
"stored-text",
|
|
18
|
+
"ui-craft",
|
|
19
|
+
"shell",
|
|
20
|
+
"react",
|
|
21
|
+
"multi-tenant",
|
|
22
|
+
"websocket",
|
|
23
|
+
"ci",
|
|
24
|
+
"dynamic-data",
|
|
25
|
+
"mongo",
|
|
26
|
+
"ai",
|
|
27
|
+
"nginx",
|
|
28
|
+
"content-site"
|
|
29
|
+
],
|
|
30
|
+
"default": [
|
|
31
|
+
"js-ts",
|
|
32
|
+
"stored-text",
|
|
33
|
+
"ui-craft"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"layout": {
|
|
37
|
+
"folders": {
|
|
38
|
+
"core": {
|
|
39
|
+
"path": "packages/core/src",
|
|
40
|
+
"purpose": "shared code the API and the web app both import"
|
|
41
|
+
},
|
|
42
|
+
"schemas": {
|
|
43
|
+
"path": "packages/core/src/schemas",
|
|
44
|
+
"purpose": "every Zod 4 schema: requests, responses, records, forms, the error contract"
|
|
45
|
+
},
|
|
46
|
+
"api": {
|
|
47
|
+
"path": "api/src",
|
|
48
|
+
"purpose": "the Fastify API: buildServer(), env.ts, the error handler, plugins"
|
|
49
|
+
},
|
|
50
|
+
"routes": {
|
|
51
|
+
"path": "api/src/routes",
|
|
52
|
+
"purpose": "thin routes: method, path, schemas, one handler call"
|
|
53
|
+
},
|
|
54
|
+
"handlers": {
|
|
55
|
+
"path": "api/src/handlers",
|
|
56
|
+
"purpose": "the work of each route, through adapters"
|
|
57
|
+
},
|
|
58
|
+
"adapters": {
|
|
59
|
+
"path": "api/src/adapters",
|
|
60
|
+
"purpose": "the one database gateway and every other outside service"
|
|
61
|
+
},
|
|
62
|
+
"auth": {
|
|
63
|
+
"path": "api/src/auth",
|
|
64
|
+
"purpose": "authentication and the request's identity (the chain keys come from here)"
|
|
65
|
+
},
|
|
66
|
+
"api-tests": {
|
|
67
|
+
"path": "api/test",
|
|
68
|
+
"purpose": "API tests through inject()"
|
|
69
|
+
},
|
|
70
|
+
"channel": {
|
|
71
|
+
"path": "channel",
|
|
72
|
+
"purpose": "the Next.js web app"
|
|
73
|
+
},
|
|
74
|
+
"docs": {
|
|
75
|
+
"path": "docs",
|
|
76
|
+
"purpose": "the spec, decisions, versions.md"
|
|
77
|
+
},
|
|
78
|
+
"tools": {
|
|
79
|
+
"path": "tools",
|
|
80
|
+
"purpose": "scripts that never ship"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"concepts": {
|
|
84
|
+
"js": [
|
|
85
|
+
"core",
|
|
86
|
+
"api",
|
|
87
|
+
"channel",
|
|
88
|
+
"api-tests"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"kinds": {
|
|
92
|
+
"schema": {
|
|
93
|
+
"what": "a Zod schema (z.object) and the error contract",
|
|
94
|
+
"in": "schemas",
|
|
95
|
+
"concepts": [
|
|
96
|
+
"schemas",
|
|
97
|
+
"env"
|
|
98
|
+
],
|
|
99
|
+
"content": "\\bz\\.(?:object|strictObject|looseObject)\\s*\\(",
|
|
100
|
+
"extensions": [
|
|
101
|
+
".ts",
|
|
102
|
+
".tsx",
|
|
103
|
+
".mts",
|
|
104
|
+
".cts",
|
|
105
|
+
".js",
|
|
106
|
+
".jsx",
|
|
107
|
+
".mjs",
|
|
108
|
+
".cjs"
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"db-gateway": {
|
|
112
|
+
"what": "the database driver and its one gateway",
|
|
113
|
+
"in": "adapters",
|
|
114
|
+
"concepts": [
|
|
115
|
+
"adapters",
|
|
116
|
+
"api-tests"
|
|
117
|
+
],
|
|
118
|
+
"content": "\\bfrom\\s+['\"](?:mongodb|pg|mysql2|mongoose|@prisma/client|drizzle-orm[^'\"]*|ioredis|redis)['\"]",
|
|
119
|
+
"extensions": [
|
|
120
|
+
".ts",
|
|
121
|
+
".tsx",
|
|
122
|
+
".mts",
|
|
123
|
+
".cts",
|
|
124
|
+
".js",
|
|
125
|
+
".jsx",
|
|
126
|
+
".mjs",
|
|
127
|
+
".cjs"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"api-test": {
|
|
131
|
+
"what": "API tests (inject(), never a bound port)",
|
|
132
|
+
"in": "api-tests"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"sourceFiles": "\\.(?:ts|tsx|mts|cts|js|jsx|mjs|cjs)$",
|
|
137
|
+
"preamble": {
|
|
138
|
+
"always": [
|
|
139
|
+
"Ask the user before inventing a new folder. A new folder goes into `.claude/layout.json` first.",
|
|
140
|
+
"When a hook, check or guard blocks work that is correct, stop and report its exact message. A blocking hook is a red check: fix the hook first, with a selftest, then continue.",
|
|
141
|
+
"When a command is refused or fails, the step fails loudly. Never report a refused write or a failed command as done.",
|
|
142
|
+
"claude-packs (`~/projects/claude-packs`) is the source of truth for every rule, check, hook and skill this project's configuration installs. A fix to one of them is made there with its test, committed, pushed and released as a new version, then taken in with `npx --no-install @thedecipherist/claude-packs update`. A project edits its installed copy only to try a fix before it goes into the kit."
|
|
143
|
+
],
|
|
144
|
+
"never": [
|
|
145
|
+
"Create source files outside these folders, or put a kind of thing anywhere but its place. The folder-law and placement-law hooks refuse both.",
|
|
146
|
+
"Put a database call outside the adapters, a Zod schema outside the schemas folder, or business rules in a route.",
|
|
147
|
+
"Edit files in `.claude/rules`, `.claude/checks` or `.claude/hooks` to get past a block. Fix the code, or ask the user to change the law.",
|
|
148
|
+
"Route around a block: no override variables, no writing through the shell after a refusal, no parking files in a scratchpad, no putting new code into an unrelated existing file.",
|
|
149
|
+
"Point at a document by line number. Cite a fixed anchor (`{#id}`) or a symbol name; lines move."
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "go",
|
|
3
|
+
"description": "Go projects: universal engineering and the go pack.",
|
|
4
|
+
"packs": {
|
|
5
|
+
"always": [
|
|
6
|
+
"base",
|
|
7
|
+
"writing",
|
|
8
|
+
"hook-proof"
|
|
9
|
+
],
|
|
10
|
+
"choose": [
|
|
11
|
+
"go",
|
|
12
|
+
"shell",
|
|
13
|
+
"docker",
|
|
14
|
+
"http-api",
|
|
15
|
+
"multi-tenant",
|
|
16
|
+
"websocket",
|
|
17
|
+
"host-agent",
|
|
18
|
+
"ci",
|
|
19
|
+
"js-ts",
|
|
20
|
+
"python",
|
|
21
|
+
"dynamic-data",
|
|
22
|
+
"web",
|
|
23
|
+
"ui-craft",
|
|
24
|
+
"content-site"
|
|
25
|
+
],
|
|
26
|
+
"default": [
|
|
27
|
+
"go"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"layout": {
|
|
31
|
+
"folders": {
|
|
32
|
+
"docs": {
|
|
33
|
+
"path": "docs",
|
|
34
|
+
"purpose": "spec, laws, licences, work orders, decisions"
|
|
35
|
+
},
|
|
36
|
+
"src": {
|
|
37
|
+
"path": "src",
|
|
38
|
+
"purpose": "all source code, only inside the subfolders below"
|
|
39
|
+
},
|
|
40
|
+
"tests": {
|
|
41
|
+
"path": "tests",
|
|
42
|
+
"purpose": "unit tests, gates with planted faults, golden files"
|
|
43
|
+
},
|
|
44
|
+
"tools": {
|
|
45
|
+
"path": "tools",
|
|
46
|
+
"purpose": "scripts and research tooling (not shipped)"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"kinds": {
|
|
50
|
+
"tests": {
|
|
51
|
+
"what": "tests, gates with planted faults, golden renders",
|
|
52
|
+
"in": "tests",
|
|
53
|
+
"concepts": [
|
|
54
|
+
"tests"
|
|
55
|
+
],
|
|
56
|
+
"files": [
|
|
57
|
+
"**/*_test.*",
|
|
58
|
+
"**/*Test.cpp",
|
|
59
|
+
"**/*Tests.cpp",
|
|
60
|
+
"**/test_*.*",
|
|
61
|
+
"**/*.test.*"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"docs": {
|
|
65
|
+
"what": "the spec, laws.md, decisions, research, work orders",
|
|
66
|
+
"in": "docs",
|
|
67
|
+
"concepts": [
|
|
68
|
+
"docs-folder"
|
|
69
|
+
],
|
|
70
|
+
"files": [
|
|
71
|
+
"**/laws.md",
|
|
72
|
+
"**/*-spec.md"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"tools": {
|
|
76
|
+
"what": "scripts and research tools that never ship",
|
|
77
|
+
"in": "tools"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"preamble": {
|
|
82
|
+
"always": [
|
|
83
|
+
"Ask the user before inventing a new folder. A new folder goes into `.claude/layout.json` first.",
|
|
84
|
+
"When a hook, check or guard blocks work that is correct, stop and report its exact message. A blocking hook is a red check: fix the hook first, with a selftest, then continue.",
|
|
85
|
+
"When a command is refused or fails, the step fails loudly. Never report a refused write or a failed command as done.",
|
|
86
|
+
"claude-packs (`~/projects/claude-packs`) is the source of truth for every rule, check, hook and skill this project's configuration installs. A fix to one of them is made there with its test, committed, pushed and released as a new version, then taken in with `npx --no-install @thedecipherist/claude-packs update`. A project edits its installed copy only to try a fix before it goes into the kit."
|
|
87
|
+
],
|
|
88
|
+
"never": [
|
|
89
|
+
"Create source files outside these folders, or put a kind of thing anywhere but its place. The folder-law and placement-law hooks refuse both.",
|
|
90
|
+
"Edit files in `.claude/rules`, `.claude/checks` or `.claude/hooks` to get past a block. Fix the code, or ask the user to change the law.",
|
|
91
|
+
"Route around a block: no override variables, no writing through the shell after a refusal, no parking files in a scratchpad, no putting new code into an unrelated existing file.",
|
|
92
|
+
"Point at a document by line number. Cite a fixed anchor (`{#id}`) or a symbol name; lines move."
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
"sourceFiles": "\\.go$"
|
|
96
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "node",
|
|
3
|
+
"description": "A Node.js or TypeScript service, web app, CLI, library, MCP server or edge proxy: base, plus the packs its stack needs (js-ts, mongo, fastify, ai, docker, shell-hooks, html-ui, web, tui, nginx). The presets pick them.",
|
|
4
|
+
"packs": {
|
|
5
|
+
"always": [
|
|
6
|
+
"base",
|
|
7
|
+
"writing",
|
|
8
|
+
"hook-proof"
|
|
9
|
+
],
|
|
10
|
+
"choose": [
|
|
11
|
+
"js-ts",
|
|
12
|
+
"mongo",
|
|
13
|
+
"fastify",
|
|
14
|
+
"ai",
|
|
15
|
+
"docker",
|
|
16
|
+
"shell-hooks",
|
|
17
|
+
"html-ui",
|
|
18
|
+
"web",
|
|
19
|
+
"tui",
|
|
20
|
+
"nginx",
|
|
21
|
+
"stored-text",
|
|
22
|
+
"ui-craft",
|
|
23
|
+
"python",
|
|
24
|
+
"shell",
|
|
25
|
+
"cpp",
|
|
26
|
+
"http-api",
|
|
27
|
+
"react",
|
|
28
|
+
"multi-tenant",
|
|
29
|
+
"websocket",
|
|
30
|
+
"host-agent",
|
|
31
|
+
"go",
|
|
32
|
+
"ci",
|
|
33
|
+
"dynamic-data",
|
|
34
|
+
"zod",
|
|
35
|
+
"content-site"
|
|
36
|
+
],
|
|
37
|
+
"default": [
|
|
38
|
+
"js-ts"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"layout": {
|
|
42
|
+
"folders": {
|
|
43
|
+
"docs": {
|
|
44
|
+
"path": "docs",
|
|
45
|
+
"purpose": "spec, decisions, versions.md"
|
|
46
|
+
},
|
|
47
|
+
"src": {
|
|
48
|
+
"path": "src",
|
|
49
|
+
"purpose": "the code: the entry, routes, handlers, the database gateway, schemas"
|
|
50
|
+
},
|
|
51
|
+
"test": {
|
|
52
|
+
"path": "test",
|
|
53
|
+
"purpose": "tests"
|
|
54
|
+
},
|
|
55
|
+
"tools": {
|
|
56
|
+
"path": "tools",
|
|
57
|
+
"purpose": "scripts that never ship"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"kinds": {
|
|
61
|
+
"tests": {
|
|
62
|
+
"what": "tests",
|
|
63
|
+
"in": "test",
|
|
64
|
+
"concepts": [
|
|
65
|
+
"js-tests"
|
|
66
|
+
],
|
|
67
|
+
"files": [
|
|
68
|
+
"**/*.test.*",
|
|
69
|
+
"**/*.spec.*"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"docs": {
|
|
73
|
+
"what": "the spec, decisions, research, versions.md",
|
|
74
|
+
"in": "docs",
|
|
75
|
+
"concepts": [
|
|
76
|
+
"docs-folder"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"tools": {
|
|
80
|
+
"what": "scripts that never ship",
|
|
81
|
+
"in": "tools"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"sourceFiles": "\\.(?:ts|tsx|mts|cts|js|jsx|mjs|cjs)$",
|
|
86
|
+
"preamble": {
|
|
87
|
+
"always": [
|
|
88
|
+
"Ask the user before inventing a new folder. A new folder goes into `.claude/layout.json` first.",
|
|
89
|
+
"When a hook, check or guard blocks work that is correct, stop and report its exact message. A blocking hook is a red check: fix the hook first, with a selftest, then continue.",
|
|
90
|
+
"When a command is refused or fails, the step fails loudly. Never report a refused write or a failed command as done.",
|
|
91
|
+
"claude-packs (`~/projects/claude-packs`) is the source of truth for every rule, check, hook and skill this project's configuration installs. A fix to one of them is made there with its test, committed, pushed and released as a new version, then taken in with `npx --no-install @thedecipherist/claude-packs update`. A project edits its installed copy only to try a fix before it goes into the kit."
|
|
92
|
+
],
|
|
93
|
+
"never": [
|
|
94
|
+
"Create source files outside these folders, or put a kind of thing anywhere but its place. The folder-law and placement-law hooks refuse both.",
|
|
95
|
+
"Edit files in `.claude/rules`, `.claude/checks` or `.claude/hooks` to get past a block. Fix the code, or ask the user to change the law.",
|
|
96
|
+
"Route around a block: no override variables, no writing through the shell after a refusal, no parking files in a scratchpad, no putting new code into an unrelated existing file.",
|
|
97
|
+
"Point at a document by line number. Cite a fixed anchor (`{#id}`) or a symbol name; lines move."
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "python",
|
|
3
|
+
"description": "Python projects: universal engineering and the python pack.",
|
|
4
|
+
"packs": {
|
|
5
|
+
"always": [
|
|
6
|
+
"base",
|
|
7
|
+
"writing",
|
|
8
|
+
"hook-proof"
|
|
9
|
+
],
|
|
10
|
+
"choose": [
|
|
11
|
+
"python",
|
|
12
|
+
"shell",
|
|
13
|
+
"docker",
|
|
14
|
+
"ai",
|
|
15
|
+
"mongo",
|
|
16
|
+
"js-ts",
|
|
17
|
+
"cpp",
|
|
18
|
+
"http-api",
|
|
19
|
+
"multi-tenant",
|
|
20
|
+
"ci",
|
|
21
|
+
"go",
|
|
22
|
+
"dynamic-data",
|
|
23
|
+
"web",
|
|
24
|
+
"ui-craft",
|
|
25
|
+
"content-site"
|
|
26
|
+
],
|
|
27
|
+
"default": [
|
|
28
|
+
"python"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"layout": {
|
|
32
|
+
"folders": {
|
|
33
|
+
"docs": {
|
|
34
|
+
"path": "docs",
|
|
35
|
+
"purpose": "spec, laws, licences, work orders, decisions"
|
|
36
|
+
},
|
|
37
|
+
"src": {
|
|
38
|
+
"path": "src",
|
|
39
|
+
"purpose": "all source code, only inside the subfolders below"
|
|
40
|
+
},
|
|
41
|
+
"tests": {
|
|
42
|
+
"path": "tests",
|
|
43
|
+
"purpose": "unit tests, gates with planted faults, golden files"
|
|
44
|
+
},
|
|
45
|
+
"tools": {
|
|
46
|
+
"path": "tools",
|
|
47
|
+
"purpose": "scripts and research tooling (not shipped)"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"kinds": {
|
|
51
|
+
"tests": {
|
|
52
|
+
"what": "tests, gates with planted faults, golden renders",
|
|
53
|
+
"in": "tests",
|
|
54
|
+
"concepts": [
|
|
55
|
+
"tests"
|
|
56
|
+
],
|
|
57
|
+
"files": [
|
|
58
|
+
"**/*_test.*",
|
|
59
|
+
"**/*Test.cpp",
|
|
60
|
+
"**/*Tests.cpp",
|
|
61
|
+
"**/test_*.*",
|
|
62
|
+
"**/*.test.*"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"docs": {
|
|
66
|
+
"what": "the spec, laws.md, decisions, research, work orders",
|
|
67
|
+
"in": "docs",
|
|
68
|
+
"concepts": [
|
|
69
|
+
"docs-folder"
|
|
70
|
+
],
|
|
71
|
+
"files": [
|
|
72
|
+
"**/laws.md",
|
|
73
|
+
"**/*-spec.md"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"tools": {
|
|
77
|
+
"what": "scripts and research tools that never ship",
|
|
78
|
+
"in": "tools"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"preamble": {
|
|
83
|
+
"always": [
|
|
84
|
+
"Ask the user before inventing a new folder. A new folder goes into `.claude/layout.json` first.",
|
|
85
|
+
"When a hook, check or guard blocks work that is correct, stop and report its exact message. A blocking hook is a red check: fix the hook first, with a selftest, then continue.",
|
|
86
|
+
"When a command is refused or fails, the step fails loudly. Never report a refused write or a failed command as done.",
|
|
87
|
+
"claude-packs (`~/projects/claude-packs`) is the source of truth for every rule, check, hook and skill this project's configuration installs. A fix to one of them is made there with its test, committed, pushed and released as a new version, then taken in with `npx --no-install @thedecipherist/claude-packs update`. A project edits its installed copy only to try a fix before it goes into the kit."
|
|
88
|
+
],
|
|
89
|
+
"never": [
|
|
90
|
+
"Create source files outside these folders, or put a kind of thing anywhere but its place. The folder-law and placement-law hooks refuse both.",
|
|
91
|
+
"Edit files in `.claude/rules`, `.claude/checks` or `.claude/hooks` to get past a block. Fix the code, or ask the user to change the law.",
|
|
92
|
+
"Route around a block: no override variables, no writing through the shell after a refusal, no parking files in a scratchpad, no putting new code into an unrelated existing file.",
|
|
93
|
+
"Point at a document by line number. Cite a fixed anchor (`{#id}`) or a symbol name; lines move."
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
"sourceFiles": "\\.(?:py|pyi)$"
|
|
97
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "synth-creator",
|
|
3
|
+
"description": "JUCE synths and effects units: realtime audio, the sound engines, the Dawn GPU painter, Stellix. Everything the kit installed before configurations existed.",
|
|
4
|
+
"packs": {
|
|
5
|
+
"always": [
|
|
6
|
+
"base",
|
|
7
|
+
"synth-creator",
|
|
8
|
+
"writing",
|
|
9
|
+
"hook-proof"
|
|
10
|
+
],
|
|
11
|
+
"choose": [
|
|
12
|
+
"cpp",
|
|
13
|
+
"audio-core",
|
|
14
|
+
"gpu-painter",
|
|
15
|
+
"stellix",
|
|
16
|
+
"python",
|
|
17
|
+
"shell",
|
|
18
|
+
"ci",
|
|
19
|
+
"reverse-engineering",
|
|
20
|
+
"midi",
|
|
21
|
+
"sound-design",
|
|
22
|
+
"instrument-shell"
|
|
23
|
+
],
|
|
24
|
+
"default": [
|
|
25
|
+
"cpp",
|
|
26
|
+
"audio-core"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"layout": {
|
|
30
|
+
"folders": {
|
|
31
|
+
"docs": {
|
|
32
|
+
"path": "docs",
|
|
33
|
+
"purpose": "spec, laws, licences, work orders, decisions"
|
|
34
|
+
},
|
|
35
|
+
"src": {
|
|
36
|
+
"path": "src",
|
|
37
|
+
"purpose": "all source code, only inside the subfolders below"
|
|
38
|
+
},
|
|
39
|
+
"tests": {
|
|
40
|
+
"path": "tests",
|
|
41
|
+
"purpose": "unit tests, gates with planted faults, golden files"
|
|
42
|
+
},
|
|
43
|
+
"tools": {
|
|
44
|
+
"path": "tools",
|
|
45
|
+
"purpose": "scripts and research tooling (not shipped)"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"kinds": {
|
|
49
|
+
"tests": {
|
|
50
|
+
"what": "tests, gates with planted faults, golden renders",
|
|
51
|
+
"in": "tests",
|
|
52
|
+
"concepts": [
|
|
53
|
+
"tests"
|
|
54
|
+
],
|
|
55
|
+
"files": [
|
|
56
|
+
"**/*_test.*",
|
|
57
|
+
"**/*Test.cpp",
|
|
58
|
+
"**/*Tests.cpp",
|
|
59
|
+
"**/test_*.*",
|
|
60
|
+
"**/*.test.*"
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
"docs": {
|
|
64
|
+
"what": "the spec, laws.md, decisions, research, work orders",
|
|
65
|
+
"in": "docs",
|
|
66
|
+
"concepts": [
|
|
67
|
+
"docs-folder"
|
|
68
|
+
],
|
|
69
|
+
"files": [
|
|
70
|
+
"**/laws.md",
|
|
71
|
+
"**/*-spec.md"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"tools": {
|
|
75
|
+
"what": "scripts and research tools that never ship",
|
|
76
|
+
"in": "tools"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"hookOrder": {
|
|
81
|
+
"PreToolUse Write|Edit|MultiEdit|NotebookEdit|Bash": [
|
|
82
|
+
"lesson-checks.mjs",
|
|
83
|
+
"file-size-guard.mjs",
|
|
84
|
+
"frozen-files.mjs",
|
|
85
|
+
"placement-law.mjs",
|
|
86
|
+
"protect-vendor.mjs",
|
|
87
|
+
"spec-lock.mjs",
|
|
88
|
+
"folder-law.mjs",
|
|
89
|
+
"shape-law.mjs",
|
|
90
|
+
"brief-guard.mjs",
|
|
91
|
+
"once-only.mjs",
|
|
92
|
+
"secrets-guard.mjs",
|
|
93
|
+
"untrusted-boundary.mjs",
|
|
94
|
+
"realtime-guard.mjs",
|
|
95
|
+
"browser-guard.py",
|
|
96
|
+
"no-shipped-images.mjs"
|
|
97
|
+
],
|
|
98
|
+
"PreToolUse Agent|Task": [
|
|
99
|
+
"brief-guard.mjs"
|
|
100
|
+
],
|
|
101
|
+
"PreToolUse Bash": [
|
|
102
|
+
"stage-guard.mjs",
|
|
103
|
+
"git-guard.mjs",
|
|
104
|
+
"build-guard.mjs"
|
|
105
|
+
],
|
|
106
|
+
"PreToolUse *": [
|
|
107
|
+
"time-guard.mjs"
|
|
108
|
+
],
|
|
109
|
+
"PostToolUse *": [
|
|
110
|
+
"time-guard.mjs"
|
|
111
|
+
],
|
|
112
|
+
"Stop": [
|
|
113
|
+
"idle-wake.mjs",
|
|
114
|
+
"making-check.mjs",
|
|
115
|
+
"git-guard.mjs"
|
|
116
|
+
],
|
|
117
|
+
"SessionStart compact": [
|
|
118
|
+
"user-asks.mjs"
|
|
119
|
+
],
|
|
120
|
+
"SessionStart": [
|
|
121
|
+
"build-sweep.mjs"
|
|
122
|
+
],
|
|
123
|
+
"SubagentStop": [
|
|
124
|
+
"build-sweep.mjs"
|
|
125
|
+
],
|
|
126
|
+
"UserPromptSubmit": [
|
|
127
|
+
"making.mjs"
|
|
128
|
+
],
|
|
129
|
+
"PostToolUse Write|Edit|MultiEdit|NotebookEdit|Bash": [
|
|
130
|
+
"param-id-lock.mjs"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"preamble": {
|
|
134
|
+
"always": [
|
|
135
|
+
"Ask the user before inventing a new folder. A new folder goes into `.claude/layout.json` first.",
|
|
136
|
+
"When a hook, check or guard blocks work that is correct, stop and report its exact message. A blocking hook is a red check: fix the hook first, with a selftest, then continue.",
|
|
137
|
+
"When a command is refused or fails, the step fails loudly. Never report a refused write or a failed command as done.",
|
|
138
|
+
"claude-packs (`~/projects/claude-packs`) is the source of truth for every rule, check, hook and skill used to build synths. A fix to one of them, or a lesson that should hold in every synth, is made there with its test, committed, pushed and released as a new version, then taken in with `npx --no-install @thedecipherist/claude-packs update`, so every synth gets it. A project edits its installed copy only to try a fix before it goes into the kit."
|
|
139
|
+
],
|
|
140
|
+
"never": [
|
|
141
|
+
"Create source files outside these folders, or put a kind of thing anywhere but its place. The folder-law and placement-law hooks refuse both.",
|
|
142
|
+
"Put drawing code in audio or world folders, or audio and world logic in the painter or UI folders.",
|
|
143
|
+
"Edit files in `.claude/rules`, `.claude/checks` or `.claude/hooks` to get past a block. Fix the code, or ask the user to change the law.",
|
|
144
|
+
"Route around a block: no override variables, no writing through the shell after a refusal, no parking files in a scratchpad, no putting new code into an unrelated existing file.",
|
|
145
|
+
"Point at a document by line number. Cite a fixed anchor (`{#id}`) or a symbol name; lines move."
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
}
|