@thedecipherist/claude-packs 0.0.0-stage → 1.1.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 +754 -0
- package/LICENSE +21 -0
- package/README.md +573 -2
- package/bin/claude-packs.mjs +212 -0
- package/configurations/base/config.json +85 -0
- package/configurations/cpp/config.json +93 -0
- package/configurations/full-stack/config.json +153 -0
- package/configurations/go/config.json +98 -0
- package/configurations/node/config.json +102 -0
- package/configurations/python/config.json +99 -0
- package/configurations/rust/config.json +106 -0
- package/configurations/synth-creator/config.json +148 -0
- package/global/hooks/gnu-shell.mjs +131 -0
- package/global/hooks/lib/shell-writes.mjs +2 -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/build-queue.mjs +22 -0
- package/lib/claude-md.mjs +60 -0
- package/lib/config-cli.mjs +36 -0
- package/lib/configs.mjs +145 -0
- package/lib/coverage.mjs +94 -0
- package/lib/custom-packs.mjs +93 -0
- package/lib/doctor.mjs +126 -0
- package/lib/fix-plan.mjs +72 -0
- package/lib/found-folders.mjs +25 -0
- package/lib/git-tokens.mjs +64 -0
- package/lib/global.mjs +125 -0
- package/lib/hook-proof.mjs +45 -0
- package/lib/hook-timing.mjs +42 -0
- package/lib/hover-gate.mjs +29 -0
- package/lib/kit-command.mjs +14 -0
- package/lib/kit-lock.mjs +149 -0
- package/lib/layout.mjs +99 -0
- package/lib/logs.mjs +109 -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 +109 -0
- package/lib/planner.mjs +59 -0
- package/lib/repeats.mjs +65 -0
- package/lib/repo-weight.mjs +28 -0
- package/lib/rule-tests.mjs +42 -0
- package/lib/rules.mjs +40 -0
- package/lib/scan-detect.mjs +130 -0
- package/lib/scan.mjs +171 -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 +31 -0
- package/lib/switches.mjs +44 -0
- package/lib/symmetry-doctor.mjs +26 -0
- package/lib/sync.mjs +133 -0
- package/lib/workorder.mjs +26 -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 +172 -0
- package/packs/audio-core/hooks/realtime-guard.mjs +67 -0
- package/packs/audio-core/pack.json +192 -0
- package/packs/audio-core/rules/a-control-is-proved-through-its-input.md +26 -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 +28 -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 +23 -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 +35 -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 +25 -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 +99 -0
- package/packs/base/hooks/dispatch-once.mjs +124 -0
- package/packs/base/hooks/file-size-guard.mjs +61 -0
- package/packs/base/hooks/folder-law.mjs +77 -0
- package/packs/base/hooks/git-guard.mjs +202 -0
- package/packs/base/hooks/lesson-checks.mjs +182 -0
- package/packs/base/hooks/lib/apply-edit.mjs +20 -0
- package/packs/base/hooks/lib/code-shapes.mjs +142 -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/crash-policy.mjs +47 -0
- package/packs/base/hooks/lib/dup-index.mjs +204 -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 +68 -0
- package/packs/base/hooks/lib/function-shapes.mjs +90 -0
- package/packs/base/hooks/lib/git-adds.mjs +21 -0
- package/packs/base/hooks/lib/git-auth.mjs +44 -0
- package/packs/base/hooks/lib/git-guard-selftest.mjs +192 -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 +69 -0
- package/packs/base/hooks/lib/layout.mjs +58 -0
- package/packs/base/hooks/lib/making-check-selftest.mjs +112 -0
- package/packs/base/hooks/lib/near-copies.mjs +76 -0
- package/packs/base/hooks/lib/program-read.mjs +199 -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/rust-scan.mjs +139 -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-lists.mjs +31 -0
- package/packs/base/hooks/lib/shape-prose.mjs +78 -0
- package/packs/base/hooks/lib/shape.mjs +273 -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 +86 -0
- package/packs/base/hooks/lib/unread-writes.mjs +24 -0
- package/packs/base/hooks/lib/writes.mjs +71 -0
- package/packs/base/hooks/making-check.mjs +248 -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 +140 -0
- package/packs/base/hooks/secrets-guard.mjs +99 -0
- package/packs/base/hooks/shape-law.mjs +140 -0
- package/packs/base/hooks/suite-once.mjs +96 -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 +19 -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 +23 -0
- package/packs/base/rules/unattended-runs.md +15 -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/new-project/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/skills/write-a-workorder/SKILL.md +41 -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 +26 -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 +29 -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/postgres/checks/pg-bind-values.json +33 -0
- package/packs/postgres/checks/pg-concurrently-in-txn.json +18 -0
- package/packs/postgres/checks/pg-fk-not-valid.json +18 -0
- package/packs/postgres/checks/pg-index-concurrently.json +18 -0
- package/packs/postgres/checks/pg-no-float-money.json +19 -0
- package/packs/postgres/checks/pg-no-money.json +18 -0
- package/packs/postgres/checks/pg-no-required-column.json +18 -0
- package/packs/postgres/checks/pg-no-volatile-default.json +18 -0
- package/packs/postgres/checks/pg-not-exists.json +18 -0
- package/packs/postgres/checks/pg-timestamptz.json +18 -0
- package/packs/postgres/hooks/db-wipe-guard.mjs +95 -0
- package/packs/postgres/pack.json +48 -0
- package/packs/postgres/rules/postgres-migrations-never-stop-traffic.md +28 -0
- package/packs/postgres/rules/postgres-one-pool-per-process.md +21 -0
- package/packs/postgres/rules/postgres-queries-are-null-safe-and-bounded.md +26 -0
- package/packs/postgres/rules/postgres-types-say-what-they-hold.md +22 -0
- package/packs/postgres/rules/postgres-values-are-bound.md +130 -0
- package/packs/postgres/skills/postgres-safe-migration/SKILL.md +45 -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 +22 -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 +22 -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/rust/checks/rust-allow-needs-reason.json +16 -0
- package/packs/rust/checks/rust-blocking-in-async.json +32 -0
- package/packs/rust/checks/rust-if-chain-is-a-match.json +32 -0
- package/packs/rust/checks/rust-static-mut.json +32 -0
- package/packs/rust/checks/rust-string-as-error.json +34 -0
- package/packs/rust/checks/rust-stub-left-in.json +32 -0
- package/packs/rust/checks/rust-unsafe-needs-safety.json +31 -0
- package/packs/rust/checks/rust-unwrap-in-library.json +34 -0
- package/packs/rust/checks/rust-wildcard-dependency.json +16 -0
- package/packs/rust/clippy.toml +5 -0
- package/packs/rust/pack.json +27 -0
- package/packs/rust/rules/rust-async-never-blocks.md +20 -0
- package/packs/rust/rules/rust-borrow-before-you-clone.md +19 -0
- package/packs/rust/rules/rust-errors-are-returned.md +22 -0
- package/packs/rust/rules/rust-lints-are-the-gate.md +23 -0
- package/packs/rust/rules/rust-repeats-become-templates.md +28 -0
- package/packs/rust/rules/rust-unsafe-is-proved.md +21 -0
- package/packs/rust/skills/rust-extract-template/SKILL.md +50 -0
- package/packs/rust/skills/rust-port/SKILL.md +22 -0
- package/packs/rust/skills/rust-review/SKILL.md +24 -0
- package/packs/rust/tools/rust-lints.toml +19 -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/bounce-a-plugin/SKILL.md +40 -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/sound-design/tools/vst3host/build.sh +73 -0
- package/packs/sound-design/tools/vst3host/host_events.h +101 -0
- package/packs/sound-design/tools/vst3host/options.h +172 -0
- package/packs/sound-design/tools/vst3host/render.cpp +245 -0
- package/packs/sound-design/tools/vst3host/session.h +241 -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 +175 -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 +21 -0
- package/packs/synth-creator/tools/buildq.mjs +74 -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
- package/prompts/workorder/PROMPT.md +53 -0
- package/prompts/workorder/run.sh +36 -0
- package/prompts/workorder/workorder.md +59 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "no-time-or-date",
|
|
3
|
+
"why": "No time or date references at all: they are a major AI tell. A duration the author states is the only exception.",
|
|
4
|
+
"rule": ".claude/rules/no-time-or-date.md",
|
|
5
|
+
"concepts": [
|
|
6
|
+
"public-text"
|
|
7
|
+
],
|
|
8
|
+
"globs": [],
|
|
9
|
+
"exclude": [
|
|
10
|
+
"**/node_modules/**",
|
|
11
|
+
"**/CHANGELOG*",
|
|
12
|
+
"articles/**",
|
|
13
|
+
"**/articles/**",
|
|
14
|
+
"blog/**",
|
|
15
|
+
"**/blog/**",
|
|
16
|
+
"posts/**",
|
|
17
|
+
"**/posts/**",
|
|
18
|
+
"content/**",
|
|
19
|
+
"**/content/**",
|
|
20
|
+
"drafts/**"
|
|
21
|
+
],
|
|
22
|
+
"prose": true,
|
|
23
|
+
"pattern": "\\b(?:in|last|this|next|since) (?:January|February|March|April|June|July|August|September|October|November|December)\\b|\\b(?:January|February|March|April|June|July|August|September|October|November|December|May) (?:\\d{1,2}, )?\\d{4}\\b|\\b(?:last|this|next) (?:year|month|week)\\b|\\b\\d+ (?:days?|weeks?|months?|years?) ago\\b|\\bat \\d{1,2}(?::\\d\\d)?\\s?(?:am|pm)\\b|\\brecently\\b",
|
|
24
|
+
"bad": "I started this last year, in June, at 11pm.\n",
|
|
25
|
+
"good": "I have been doing this for about 10 years.\nThe list may grow.\n",
|
|
26
|
+
"flags": "i"
|
|
27
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "no-trailing-ing",
|
|
3
|
+
"why": "Fact, comma, then a participle that fake-analyzes. Cut everything after the comma; a real claim gets its own sentence with evidence.",
|
|
4
|
+
"rule": ".claude/rules/no-stock-language.md",
|
|
5
|
+
"concepts": [
|
|
6
|
+
"public-text"
|
|
7
|
+
],
|
|
8
|
+
"globs": [],
|
|
9
|
+
"exclude": [
|
|
10
|
+
"**/node_modules/**",
|
|
11
|
+
"**/CHANGELOG*"
|
|
12
|
+
],
|
|
13
|
+
"prose": true,
|
|
14
|
+
"pattern": ",\\s+(?:highlighting|underscoring|showcasing|reflecting|ensuring|paving the way)\\b",
|
|
15
|
+
"bad": "It ships in one file, ensuring a smoother experience.\n",
|
|
16
|
+
"good": "It ships in one file.\n",
|
|
17
|
+
"flags": "i"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "no-vague-attribution",
|
|
3
|
+
"why": "Name the source or drop the claim. Honest personal doubt beats borrowed authority.",
|
|
4
|
+
"rule": ".claude/rules/no-stock-language.md",
|
|
5
|
+
"concepts": [
|
|
6
|
+
"public-text"
|
|
7
|
+
],
|
|
8
|
+
"globs": [],
|
|
9
|
+
"exclude": [
|
|
10
|
+
"**/node_modules/**",
|
|
11
|
+
"**/CHANGELOG*"
|
|
12
|
+
],
|
|
13
|
+
"prose": true,
|
|
14
|
+
"pattern": "\\b(?:experts say|studies (?:have )?show(?:n)?|research suggests|it is widely regarded)\\b",
|
|
15
|
+
"bad": "Studies have shown it helps.\n",
|
|
16
|
+
"good": "I haven't seen good numbers on it.\n",
|
|
17
|
+
"flags": "i"
|
|
18
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "writing",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Text that goes public reads like a person wrote it: cadence, voice, stance for replies, structure for posts. Rules, one-job skills and checks on public text.",
|
|
5
|
+
"type": "stock",
|
|
6
|
+
"author": "claude-packs",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"homepage": "https://github.com/TheDecipherist/claude-packs",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/TheDecipherist/claude-packs.git",
|
|
12
|
+
"directory": "packs/writing"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"writing",
|
|
16
|
+
"voice"
|
|
17
|
+
],
|
|
18
|
+
"engines": {
|
|
19
|
+
"claude-packs": ">=0.19.0"
|
|
20
|
+
},
|
|
21
|
+
"folders": {},
|
|
22
|
+
"concepts": {
|
|
23
|
+
"public-text": [
|
|
24
|
+
"README*",
|
|
25
|
+
"**/README*",
|
|
26
|
+
"**/*.mdx",
|
|
27
|
+
"docs/manual/**",
|
|
28
|
+
"docs/guide/**",
|
|
29
|
+
"docs/guides/**",
|
|
30
|
+
"manual/**",
|
|
31
|
+
"content/**",
|
|
32
|
+
"blog/**",
|
|
33
|
+
"posts/**",
|
|
34
|
+
"articles/**",
|
|
35
|
+
"drafts/**"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"skillsIn": null,
|
|
39
|
+
"hooks": {},
|
|
40
|
+
"optIn": [
|
|
41
|
+
"checks/no-time-or-date.json"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ASCII only, and never an em dash
|
|
8
|
+
|
|
9
|
+
The cleanest discriminator there is: em dashes are in 0-0.5% of human posts and 97% of LLM-flagged ones.
|
|
10
|
+
|
|
11
|
+
<constraints>
|
|
12
|
+
Always do:
|
|
13
|
+
- Use a comma, a parenthetical or a period instead. Parens are the natural aside (half of real posts have one) but don't prove humanity; slop overuses them too.
|
|
14
|
+
- Keep to ASCII: straight quotes, three dots, a plain hyphen.
|
|
15
|
+
|
|
16
|
+
Never do:
|
|
17
|
+
- Write an em dash, or " -- " in its place.
|
|
18
|
+
</constraints>
|
|
19
|
+
|
|
20
|
+
## Check
|
|
21
|
+
`ascii-no-em-dash` (lesson check; code and URLs are left out).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Cut about half: say the thing, one concrete consequence, stop
|
|
8
|
+
|
|
9
|
+
AI-ness is not in individual words; it is in cadence: padding, symmetry, hedging-by-committee, over-explaining. Fix rhythm and structure, not vocabulary. When a real sample of the target register exists, match it.
|
|
10
|
+
|
|
11
|
+
<constraints>
|
|
12
|
+
Always do:
|
|
13
|
+
- Cut about half of a normal AI draft. Say the thing, name one concrete consequence, stop.
|
|
14
|
+
- Write one vivid concrete line, not three explanatory sentences.
|
|
15
|
+
- Use the verb: "make a determination" is determine, "provide an explanation" is explain.
|
|
16
|
+
- Calibrate (measured): the median real comment is under 50 words, the median real post 100-125, LLM-flagged posts 230. A reply of more than a few tight sentences is probably too long. For a post the sub's norm wins: a 300+ word value post is fine and scores well. Cut padding, not substance.
|
|
17
|
+
|
|
18
|
+
Never do:
|
|
19
|
+
- Open with a wind-up or "great question", or restate the question.
|
|
20
|
+
</constraints>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# A direct voice: say it plainly, and sound like the author
|
|
8
|
+
|
|
9
|
+
<constraints>
|
|
10
|
+
Always do:
|
|
11
|
+
- Get to the point fast. Never waste the reader's time. Assume they're smart enough to keep up: easy to understand, never dumbed down.
|
|
12
|
+
- Match their tone ("you get what you give"): polite to the polite, an edge for the smug. Facts never bend either way.
|
|
13
|
+
- Make every piece self-contained: name the tool or problem up front, never assume the reader knows the thread.
|
|
14
|
+
- Use plain words. No jargon like "prose", "deterministic", "probabilistic". If a normal person wouldn't say it out loud, don't write it.
|
|
15
|
+
- Keep what is the author's own: the words, intensifiers and connectors they really use, read from their earlier writing.
|
|
16
|
+
- Write "I", not "we", for one person's own projects, including their manual pages.
|
|
17
|
+
- In casual channels only, an occasional "its" for "it's" or a dropped comma reads human (about 7% of real posts have a missing apostrophe; slop has flawless punctuation).
|
|
18
|
+
|
|
19
|
+
Never do:
|
|
20
|
+
- Force errors, or use them in bios, articles or anything polished.
|
|
21
|
+
- Blame a vendor or a tool for what is a habit of the user or the model.
|
|
22
|
+
</constraints>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# No cargo cult: these rules are about cadence, not a word list
|
|
8
|
+
|
|
9
|
+
<constraints>
|
|
10
|
+
Never do:
|
|
11
|
+
- Ban common English words ("that", "just", "actually"): the bans break normal English.
|
|
12
|
+
- Swap one canned phrase list for another; replacements become tells too.
|
|
13
|
+
- Add bullets, an FAQ or headers to "sound organized". Real lists are fine and ragged.
|
|
14
|
+
- Turn every hedge into a confident claim. Verify, then state it flat: manufacturing confident wrong statements is worse than sounding like AI.
|
|
15
|
+
- Force casualness. Measured slop is already chattier and more contraction-heavy than real posts; piling on "super", "totally" and exclamation points is its own tell. Humans mix registers.
|
|
16
|
+
</constraints>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Scaffolding is the slop shape; a real list is short and ragged
|
|
8
|
+
|
|
9
|
+
Bullets do not kill posts (human posts with bullets slightly outscore those without, 4 vs 3); scaffolding does. Bold is in 5% of human writing vs about 30% of slop, headers in under 2%.
|
|
10
|
+
|
|
11
|
+
<constraints>
|
|
12
|
+
Always do:
|
|
13
|
+
- Put receipts as specific numbers woven into prose, or one short ragged list: uneven item lengths, sometimes two items. When winners use bullets it is ONE short list of one-liners (top 20 text posts: 4 of 20 in r/ClaudeAI and r/ClaudeCode, 8 of 20 in r/mongodb, 6 of 20 in r/webdev and r/node; headers 2-4 of 20; median 140-240 words).
|
|
14
|
+
- Write the rest as prose in short paragraphs. A 90-word bullet is a paragraph with a dash in front; make it prose.
|
|
15
|
+
- On a manual page, put no heading directly under the title; the first heading comes where the subject changes.
|
|
16
|
+
|
|
17
|
+
Never do:
|
|
18
|
+
- Bold-header and numbered-bold skeletons, outside articles whose own guidelines require structure.
|
|
19
|
+
</constraints>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# No stock language: say what is, name who said it
|
|
8
|
+
|
|
9
|
+
<constraints>
|
|
10
|
+
Always do:
|
|
11
|
+
- Use is and has. "serves as", "stands as", "functions as", "represents", "marks" are **is**; "boasts", "features", "offers", "maintains" are **has**. If the sentence still works with is or has, it was padding.
|
|
12
|
+
- Start a sentence with its subject.
|
|
13
|
+
- Name the source, or drop the claim. Honest personal doubt ("I haven't seen good numbers on it") beats borrowed authority.
|
|
14
|
+
- Replace filler with the specific version: "it depends on your needs" becomes "under 50 users, use the free tier".
|
|
15
|
+
|
|
16
|
+
Never do:
|
|
17
|
+
- Dramatic colon setups ("The reality: nobody cares."): measured at literal zero in human text.
|
|
18
|
+
- Stock connectors ("Here's the thing", "That said", "So here's what happened"): also zero in human text. Delete them, say the thing.
|
|
19
|
+
- Slop words, a short list that does not grow: delve, tapestry, testament, landscape, journey, seamless, robust, game-changer, crucial, dive into, unleash, leverage, supercharge.
|
|
20
|
+
- Trailing "-ing" commentary: ", highlighting their commitment to...", ", ensuring a smoother experience", ", underscoring / reflecting / showcasing / paving the way for". Cut everything after the comma; a real claim there gets its own sentence with evidence.
|
|
21
|
+
- Participial openers ("Leveraging the power of...", "Building on this...", "Drawing from..."): instruction-tuned models open this way at 2-5x the human rate (PNAS 2025).
|
|
22
|
+
- Vague attribution: "experts say", "studies have shown", "research suggests", "it is widely regarded".
|
|
23
|
+
- Pseudo-wisdom: "The key is finding the right balance", "there's no one-size-fits-all answer", "context is everything". State what happened; delete every clause explaining why it matters to the universe.
|
|
24
|
+
</constraints>
|
|
25
|
+
|
|
26
|
+
## Check
|
|
27
|
+
`no-stock-connectors`, `no-slop-words`, `no-dramatic-colon`, `no-copula-dodging`, `no-trailing-ing`, `no-participial-opener`, `no-vague-attribution`, `no-pseudo-wisdom` (lesson checks).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# No invented time or date
|
|
8
|
+
|
|
9
|
+
<constraints>
|
|
10
|
+
Always do:
|
|
11
|
+
- Keep a date or a duration that is a real fact the reader needs: history, a release, a measured span.
|
|
12
|
+
|
|
13
|
+
Never do:
|
|
14
|
+
- Invent a time reference to sound lived-in: "last year", "in June", "at 11pm", "recently".
|
|
15
|
+
</constraints>
|
|
16
|
+
|
|
17
|
+
## Check
|
|
18
|
+
`no-time-or-date` (a lesson check, opt-in): for an author who wants no dates at all in posts. Name `checks/no-time-or-date.json` in `"enable"`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Rhythm like talk: no mirrored, tripled or aphoristic shapes
|
|
8
|
+
|
|
9
|
+
<constraints>
|
|
10
|
+
Always do:
|
|
11
|
+
- Mix short, medium and long sentences the way talk does, and vary paragraph sizes: pair a long block with a one-liner.
|
|
12
|
+
- Reuse the word. Humans hammer the same noun; LLMs rotate synonyms (measured: humans repeat their top content word about 50% more).
|
|
13
|
+
- Catch any 3-item list: cut the third or expand past three, unless all three do distinct work.
|
|
14
|
+
- Say an idea as an explanation ("the tokens aren't in the query, they're in everything Claude does around it when there's something it doesn't know").
|
|
15
|
+
|
|
16
|
+
Never do:
|
|
17
|
+
- Write uniform sentence lengths, or the overcorrection, the dramatic staccato ("It's not. It's a band-aid.").
|
|
18
|
+
- Write "not X, but Y" mirrored constructions: make it a plain statement.
|
|
19
|
+
- Write a punchline sentence, the line that sums a paragraph up as an aphorism: "the token tax exists only where there is something to know", "every one of those posts was somebody's evening gone". One exception: a tagline the user chose, as the last line.
|
|
20
|
+
</constraints>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
# concepts: public-text
|
|
3
|
+
paths:
|
|
4
|
+
- "placeholder"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Write from your own corner, end on the ask, hedge like a person
|
|
8
|
+
|
|
9
|
+
Measured, as defaults.
|
|
10
|
+
|
|
11
|
+
<constraints>
|
|
12
|
+
Always do:
|
|
13
|
+
- Write in first person from your own situation (about 90% of human posts), with oddly specific numbers ("200k users", "$900", "30/100"). Humans run 2.8x more first person than second; slop is near 1:1 and lectures "you". Round numbers read fake; specific ones read lived.
|
|
14
|
+
- End on the question or a bare thanks. Comments just stop, often without terminal punctuation.
|
|
15
|
+
- Keep self-anchored doubt where it is real: "not sure if this is a good idea tho", "afaik". A quarter to a third of real posts do it, and slop hedges LESS (it performs confidence).
|
|
16
|
+
|
|
17
|
+
Never do:
|
|
18
|
+
- Write a closing thought or a summary close: measured at about 0%.
|
|
19
|
+
- Hedge symmetrically ("it depends on your use case"), or both-sides a claim the author holds.
|
|
20
|
+
</constraints>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: argument-post
|
|
3
|
+
description: Use when writing an opinion piece, a post that argues a claim, or a post meant to travel beyond people who know the author.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# The argument post: what the 750k-view post did
|
|
7
|
+
|
|
8
|
+
r/ClaudeAI, 935 pts, 165 comments.
|
|
9
|
+
|
|
10
|
+
"Why are all the Claude Code skill files I see online completely
|
|
11
|
+
pointless?" Two narrative posts by the same author in the same month did 13 and 8 points.
|
|
12
|
+
The difference is the whole lesson:
|
|
13
|
+
|
|
14
|
+
- **About the reader, not the author.** Everyone has a skill file; the
|
|
15
|
+
first three lines make every reader feel caught. An argument the reader
|
|
16
|
+
can test against their own setup in two seconds travels; a story about
|
|
17
|
+
what the author did gets read by people who care about the author.
|
|
18
|
+
- **Shape:** one recognizable example everyone has seen (the quoted
|
|
19
|
+
boilerplate) -> one-line verdict -> one principle ("the point of a skill
|
|
20
|
+
is to fix something Claude consistently gets wrong") -> a short list of
|
|
21
|
+
specific things it gets wrong -> restatement -> a humble ask ("Am I
|
|
22
|
+
missing something?"). About 150 words. No numbers, no links, no
|
|
23
|
+
product, no disclosure needed.
|
|
24
|
+
- **The list is the engine.** Four concrete one-liners from the author's domain;
|
|
25
|
+
every reader has a fifth, which is where the comments come from.
|
|
26
|
+
- **The close lets people disagree without a fight,** so the argument
|
|
27
|
+
fills on both sides.
|
|
28
|
+
- **Title = an opinion inside a question, about the reader's files.**
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: humanize
|
|
3
|
+
description: Use when text is about to go public or to someone else, a manual page, a README, an article, a post, a reply, an email, a bio, or when asked whether something sounds like AI or to make it sound human.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Humanize: the last pass on anything that goes public
|
|
7
|
+
|
|
8
|
+
The rules on public text set the cadence (`cut-the-padding`, `rhythm-like-talk`, `no-stock-language`, `no-scaffolding`, `no-time-or-date`, `ascii-no-em-dash`, `write-from-your-own-corner`, `direct-voice`, `no-cargo-cult`). This is the pass over the finished draft. Not for code, commit messages, config or internal specs, logs and briefs: those stay plain.
|
|
9
|
+
|
|
10
|
+
Why it matters: readers trust a voice that sounds like a person, generic text sinks in a crowded channel, and moderators remove what reads as slop.
|
|
11
|
+
|
|
12
|
+
<constraints>
|
|
13
|
+
Always do:
|
|
14
|
+
1. Before publishing for an employer or a client, run their review track. Cadence and voice stay here.
|
|
15
|
+
2. Run the cadence check:
|
|
16
|
+
- em dashes gone; no "not X but Y"; triads cut; no summary close (end on the ask or the last point); no punchline sentences; no colon drama; no stock connectors or slop words;
|
|
17
|
+
- sentence and paragraph shapes varied, no staccato performance; repeated terms NOT thesaurus-varied;
|
|
18
|
+
- more I/we than you/your unless the medium demands otherwise, and "I" not "we" for the author's own projects;
|
|
19
|
+
- padding cut: could it be said in half the words; self-contained; ASCII only; no invented time or date.
|
|
20
|
+
3. Run the spot tests on any suspect sentence:
|
|
21
|
+
- **Deletion test:** remove it. Paragraph loses nothing: it was filler.
|
|
22
|
+
- **Genericity test:** swap the names, tool and subject for any other. Sentence still reads fine: it says nothing; make it specific or cut.
|
|
23
|
+
4. Run the substitution sweep: any "serves as / stands as / boasts / features" that survives an is/has swap gets swapped; any trailing "-ing" commentary after a comma goes; any unnamed "experts / studies" gets a name or the claim goes.
|
|
24
|
+
5. Deliver it clean. Reasoning, stance checks and notes stay OUTSIDE the final text. The text the author will use goes in its own fenced code block with NOTHING else in it. Longer deliverables go out as .md files, never as artifacts.
|
|
25
|
+
|
|
26
|
+
Never do:
|
|
27
|
+
- Mix draft and explanation in one block.
|
|
28
|
+
</constraints>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: launch-post
|
|
3
|
+
description: Use when announcing a product, a project or a release in a post or on a manual page.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Launch and product posts
|
|
7
|
+
|
|
8
|
+
- **Lead with the argument, not the product.** Title is the claim, the
|
|
9
|
+
first paragraph pays it off, the product shows up around paragraph five
|
|
10
|
+
as the answer to the argument. A title that announces a product tells
|
|
11
|
+
scrollers "ad" before they read a word.
|
|
12
|
+
- **No product name and no brand word in the title** when a topic word
|
|
13
|
+
already implies it (a word for the whole problem pulls every crowd that has
|
|
14
|
+
it, not only the users of one product). A tagline is not a title; it stops
|
|
15
|
+
people the way a billboard does. The tagline goes as the LAST line,
|
|
16
|
+
after the argument has landed.
|
|
17
|
+
- **Disclose once, plainly, in the first lines.** "I work at the company
|
|
18
|
+
that makes this" or "this is my own project" when that's true. Never say
|
|
19
|
+
the employer twice. A good form: "(my employer, so check it yourself)".
|
|
20
|
+
- **Numbers only if you can defend them in the thread.** A benchmark that
|
|
21
|
+
invites "so yours got a special setup and the baseline didn't?" makes the
|
|
22
|
+
thread about the benchmark. Hold contested numbers for a
|
|
23
|
+
second post when they can be measured clean; that second post is its own
|
|
24
|
+
launch.
|
|
25
|
+
- **Something to look at.** The best posts each have one concrete thing:
|
|
26
|
+
4,681 vs 251 tokens, or the injection that almost worked. With numbers
|
|
27
|
+
held back, a five-line code snippet does that job.
|
|
28
|
+
- **Early-development honesty beats a challenge close** for a launch: "I
|
|
29
|
+
obviously havent been able to try every scenario so if you hit a bug or
|
|
30
|
+
want something it doesn't do, open an issue" (an issue, not a PR; a PR is
|
|
31
|
+
code), then one sentence giving the reader a job ("if Claude makes a
|
|
32
|
+
mistake for you that isn't on the list, tell me, that's the next thing I
|
|
33
|
+
fix").
|
|
34
|
+
- **Nothing negative about a vendor you work for or depend on.** The fault
|
|
35
|
+
is the habit, the data or the setup. "I got tired of seeing people blame
|
|
36
|
+
the tool for things that aren't its fault" is the register.
|
|
37
|
+
- **One person's own projects are "I", not "we",** including the manual pages that
|
|
38
|
+
describe them.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pick-subreddit
|
|
3
|
+
description: Use when choosing which subreddit to post in, or asked what culture or length a subreddit expects.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pick the subreddit
|
|
7
|
+
|
|
8
|
+
Recommend by matching topic to culture and goal (reach: high median score; discussion: high median comments). For an unlisted sub, skim its top posts of the week and classify by analogy.
|
|
9
|
+
|
|
10
|
+
## The four cultures
|
|
11
|
+
|
|
12
|
+
- **Builder/practitioner** (mongodb, Rag, PostgreSQL, node, mcp,
|
|
13
|
+
dataengineering, aws, docker, devops, backend, database, analytics,
|
|
14
|
+
machinelearning, vectordatabase, langchain, llmdevs, etl) ->
|
|
15
|
+
**Template A** (value post, job = upvotes) or **Template B** (question
|
|
16
|
+
post, job = comments).
|
|
17
|
+
- **Meme/fan** (ClaudeAI, ClaudeCode, ChatGPT) -> **Template C**: humor,
|
|
18
|
+
praise, shared feeling, sharp collective critique; media welcome.
|
|
19
|
+
- **News aggregator** (technology, programming) -> **Template D**: submit a
|
|
20
|
+
link + headline, do NOT write a text body. (Measured: 0% of r/technology
|
|
21
|
+
and 15% of r/programming posts carry body text.)
|
|
22
|
+
- **Watercooler/story** (sysadmin, ExperiencedDevs, startups,
|
|
23
|
+
learnprogramming, learnsql) -> Template C in a professional register
|
|
24
|
+
(war story, confession, career question).
|
|
25
|
+
|
|
26
|
+
Modifiers: LIFECYCLE (a gold-rush sub like claudeskills rewards
|
|
27
|
+
self-promo while the rush lasts; a quiet young niche like mcp does not;
|
|
28
|
+
check the flop rate, not the age) and FORMAT (self-post subs you write;
|
|
29
|
+
link subs you curate).
|
|
30
|
+
|
|
31
|
+
Schemaless and database-choice arguments live in r/webdev, r/node,
|
|
32
|
+
r/ExperiencedDevs and r/devops, not r/mongodb (measured 2026-10: a
|
|
33
|
+
Reddit-wide schema/schemaless search put r/node at 24 relevant threads and
|
|
34
|
+
r/webdev's 463-point "if NoSQL ends up with schemas anyway" thread at the
|
|
35
|
+
top; r/mongodb is where people who already chose it ask how-to). Second
|
|
36
|
+
wave for a launch goes there.
|
|
37
|
+
|
|
38
|
+
## Per-sub cheat table (July 2026 snapshot, ~100 posts/sub)
|
|
39
|
+
|
|
40
|
+
Medians are directional (n~100). "Slop%" = share of posts machine-flagged
|
|
41
|
+
as LLM-written; high slop = easy to stand out by sounding human.
|
|
42
|
+
|
|
43
|
+
| Sub | Culture | Med score | Med comments | Slop% | Notes |
|
|
44
|
+
|---|---|---|---|---|---|
|
|
45
|
+
| technology | news | 869 | 48 | 0 | link-only, no body |
|
|
46
|
+
| claudeskills | builder/gold-rush | 95 | 16 | 23 | showcase tolerated, huge ceiling |
|
|
47
|
+
| learnsql | learner Q&A | 77 | 19 | 18 | question titles: 33 vs 19 comments |
|
|
48
|
+
| ExperiencedDevs | watercooler | 71 | 69 | 2 | comment monster; Q-titles 97 vs 54 comments |
|
|
49
|
+
| database | builder | 21 | 7 | 0 | Q-titles 38 vs 13 comments |
|
|
50
|
+
| programming | news | 15 | 5 | 7 | link sub, text posts rare |
|
|
51
|
+
| dataengineering | builder | 15 | 10 | 1 | clean room, human tone lands |
|
|
52
|
+
| machinelearning | builder/research | 13 | 17 | 4 | depth expected |
|
|
53
|
+
| postgresql | builder | 6 | 7 | 7 | short + newsy wins |
|
|
54
|
+
| sysadmin | watercooler | 6 | 13 | 0 | war stories, zero slop tolerance |
|
|
55
|
+
| backend | builder | 5 | 26 | 4 | discussion-heavy; Q-titles 31 vs 18 |
|
|
56
|
+
| startups | story | 3 | 12 | 0 | first-person stories only |
|
|
57
|
+
| rag | builder | 3 | 5 | 21 | code IS the substance here |
|
|
58
|
+
| ChatGPT | fan | 3 | 7 | 8 | media/meme, body text rare |
|
|
59
|
+
| devops | builder | 3 | 25 | 4 | discussion-heavy |
|
|
60
|
+
| node | builder | 2.5 | 5 | 7 | |
|
|
61
|
+
| ClaudeCode | fan/builder | 2 | 13 | 8 | meme/manifesto register |
|
|
62
|
+
| ClaudeAI | fan | 2 | 5 | 7 | |
|
|
63
|
+
| mongodb | builder | 2 | 2 | 16 | small room, human tone stands out |
|
|
64
|
+
| mcp | builder/young | 2 | 1 | 17 | quiet niche, no self-promo |
|
|
65
|
+
| llmdevs | builder | 1 | 2 | 10 | |
|
|
66
|
+
| aws | builder | 1 | 11 | 5 | Q&A rewards questions |
|
|
67
|
+
| docker | builder | 1 | 7 | 4 | |
|
|
68
|
+
| webdev | builder | 1 | 4.5 | 6 | |
|
|
69
|
+
| learnprogramming | learner Q&A | 1 | 10.5 | 3 | |
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: post-voice
|
|
3
|
+
description: Use when writing a post, a manual page or an article in the author's own voice.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# The voice of a post (one job: it reads like a person telling what happened)
|
|
7
|
+
|
|
8
|
+
A reply is flat and conclusion-first. A post is different, and this is the register for posts, manual pages and articles:
|
|
9
|
+
|
|
10
|
+
- **Opens plain.** "I was reading about prompt injection and I wanted to see if I could actually trigger it." A conflict of interest goes in the first lines, once: "I work on this tool, so check it yourself."
|
|
11
|
+
- **Narrates in the order it happened.** I noticed, I didn't understand why, so I wrote a hook, the first thing it showed was, that surprised me. It does not argue in order; it tells what was done and seen.
|
|
12
|
+
- **Explains the mechanism right after the number**, in plain words: "every nested thing becomes its own table with a foreign key back to the parent". A number never stands alone.
|
|
13
|
+
- **Has a "to be fair" paragraph** that gives the other side its win ("To be fair, plain query text was about the same").
|
|
14
|
+
- **Closes with an offer, not a lesson.** "Happy to share the hook if anyone wants it." Or the humble ask: "Am I missing something?"
|
|
15
|
+
- **Uses the author's own words.** Read their earlier writing and keep the phrases they really use, spelling habits included. Ask for a sample when there is none.
|
|
16
|
+
- **Avoids anything that sounds like a keynote.** No coined phrases, no slogans. "I", not "we", for one person's own work.
|
|
17
|
+
- **Manual pages read like the posts.** First person, same openers, same "to be fair", same plain mechanism after the claim. A manual page in a different voice from the launch post is a tell by itself.
|
|
18
|
+
|
|
19
|
+
**Target register for a post:**
|
|
20
|
+
> I found that 95% of the tokens spent on one of my databases were being wasted on something obvious. I work on the tool that found it, so check it yourself.
|
|
21
|
+
|
|
22
|
+
The thing found, one oddly specific number, and the disclosure.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reddit-post
|
|
3
|
+
description: Use when drafting a Reddit post, or asked whether a post will work on Reddit or is too self-promo.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Draft a Reddit post
|
|
7
|
+
|
|
8
|
+
## Principles that survived the data check
|
|
9
|
+
|
|
10
|
+
- **The title is ~80% of the post.** Spend effort there first.
|
|
11
|
+
- **One post, one job.** Upvotes OR comments OR community bonding.
|
|
12
|
+
(Measured: an open-question close earns 12 median comments vs 8 without,
|
|
13
|
+
but scores LOWER on votes, 3 vs 4. Question titles: 15 vs 7 median
|
|
14
|
+
comments. The tradeoff is real; pick the job before writing.)
|
|
15
|
+
- **Self-promo that leads with itself is punished.** Bury the ask, lead
|
|
16
|
+
with value. Exception: gold-rush subs in their rush window (claudeskills
|
|
17
|
+
now) tolerate showcase posts; check the room's top posts first.
|
|
18
|
+
- **Match the emotion of the room.** Practitioner subs reward usefulness
|
|
19
|
+
and curiosity; fan subs reward humor and solidarity. 30-second test:
|
|
20
|
+
skim the sub's top posts of the week; do they solve problems or express
|
|
21
|
+
feelings? Write to that.
|
|
22
|
+
- **Do not dump raw code.** Exception: r/Rag, where code IS the substance.
|
|
23
|
+
A five-line snippet that makes the claim concrete is not a dump; dev
|
|
24
|
+
readers scroll for it.
|
|
25
|
+
- **Velocity beats ratio.** A >=80% upvote ratio is a survival floor, not a
|
|
26
|
+
driver. Watch the first 3 hours: >6 comments in hour one is the go-viral
|
|
27
|
+
signal; a flat view curve by hour three means it's done, change the
|
|
28
|
+
angle or the hour, don't just repost. Shares (author-only metric) are
|
|
29
|
+
the truest "it landed" signal and can exceed upvotes.
|
|
30
|
+
- **Timing:** mid-week or Sunday; avoid Saturday. Best hour isn't reliable;
|
|
31
|
+
use Post Insights' first-hour signal.
|
|
32
|
+
|
|
33
|
+
For POSTS the sub's length norm overrides the shortness instinct: 300+ word human posts score best (median 5). A value post may run long; it must read human, not short.
|
|
34
|
+
|
|
35
|
+
## Templates (rebuilt from the human corpus)
|
|
36
|
+
|
|
37
|
+
**A. Value post (upvotes):** first-person hook stating YOUR situation with
|
|
38
|
+
one oddly specific number ("I'm running X with 200k users") -> what you
|
|
39
|
+
did/found, receipts woven in prose or one ragged list -> the one insight ->
|
|
40
|
+
stop, or one open question if comments also matter. No summary close.
|
|
41
|
+
**B. Question post (comments):** greeting optional ("Hi all" opens 19-25%
|
|
42
|
+
of real posts) -> your situation in first person, 2-4 sentences, concrete
|
|
43
|
+
constraints and numbers -> the actual question as the LAST line, ending
|
|
44
|
+
with "?" -> optionally "Thanks!" / "TIA". Nothing after the ask.
|
|
45
|
+
**C. Community post (fan/watercooler):** relatable hook or war story in
|
|
46
|
+
the room's emotional register, humor or solidarity, short, media where the
|
|
47
|
+
sub likes it. No lesson-of-the-day close.
|
|
48
|
+
**D. Link post:** headline + link only.
|
|
49
|
+
**E. Argument post (the 750k shape):** a claim about the reader's own
|
|
50
|
+
setup in the title -> the claim paid off in paragraph one -> who you are
|
|
51
|
+
and how you know, second -> one short list of one-liners -> the fix or
|
|
52
|
+
the thing you built -> an ask that lets people disagree. Use for
|
|
53
|
+
launches and for any opinion piece.
|
|
54
|
+
|
|
55
|
+
## Workflow
|
|
56
|
+
|
|
57
|
+
1. Confirm target sub and topic/goal. No sub given: `pick-subreddit`.
|
|
58
|
+
2. Pick ONE job, then template A/B/C/D/E. An argument or a launch: `argument-post`, `launch-post`.
|
|
59
|
+
3. Draft to the skeleton, tuned to the sub: length from the sub's norm, one link max (none where links hurt), first-person hook, receipts, question-close only if the job is comments. The voice is `post-voice`.
|
|
60
|
+
4. Title last, with real effort: `reddit-title`. Flair: pick the value or humor flair; never the self-promo or low-effort-question flair.
|
|
61
|
+
5. "Conclusion first" is a REPLY rule, but a title that makes a claim gets that claim paid off in paragraph one; the reader must not wait 70 words through the author's bio for it. The hook is the reader's own situation; who the author is and how they know comes second.
|
|
62
|
+
6. Pre-flight: right template for the culture, one job, one link, flair ok, the title got real effort and is a claim about the reader with no product or brand word, the first paragraph pays it off, the sub's length norm respected, receipts specific, ragged list not scaffolding, no em dashes, no summary close, no time or date anywhere, `humanize` passed. Employer disclosed once; no numbers that can't be defended in the thread.
|
|
63
|
+
7. Deliver BOTH formats: (1) paste-ready markdown in a fenced code block (title + body); (2) a two-column Field/Content markdown table (Title, Body, Flair, Best time, Sub) with `<br><br>` between paragraphs and `-` + `<br>` bullets so it pastes into Excel/Docs cleanly. Then list the 3 things to watch in the first 3 hours (hour-one comments >6, view curve by hour three, shares). Deliver as .md files, not artifacts.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reddit-title
|
|
3
|
+
description: Use when writing or judging a Reddit post title, or asked which title or flair to use.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# The title is about 80% of the post
|
|
7
|
+
|
|
8
|
+
Write it last, with real effort.
|
|
9
|
+
|
|
10
|
+
Title rules that held: a number helps almost everywhere; first-person "I..."
|
|
11
|
+
titles are a lever in experience/builder subs; a "?" title is a comment
|
|
12
|
+
machine in Q&A/discussion subs (ExperiencedDevs, database, backend,
|
|
13
|
+
learnsql, aws) but dies in showcase/meme subs; avoid "Title: subtitle"
|
|
14
|
+
colons; never "Please help" as a title. Flair: pick the value or humor
|
|
15
|
+
flair; never the self-promo or low-effort-question flair.
|
|
16
|
+
|
|
17
|
+
Title rules added 2026-10: the title is the claim, said the way the author would
|
|
18
|
+
say it in a comment ("Everyone argues schemaless vs schema like it's
|
|
19
|
+
either/or. It isn't, and picking a side is the actual mistake"). It is
|
|
20
|
+
about the reader's own setup, something they can disagree with from the
|
|
21
|
+
feed without opening the post. No product name, no brand word a topic word
|
|
22
|
+
already implies, no tagline. Dry one-liners are the author's register too ("I
|
|
23
|
+
almost got owned. By myself.").
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reply-moves
|
|
3
|
+
description: Use when drafting the words of a reply, after the stance is settled.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Reply moves by situation
|
|
7
|
+
|
|
8
|
+
All replies: no preamble, conclusion first. (Posts are different: `post-voice`.)
|
|
9
|
+
|
|
10
|
+
- **Wrong AND smug:** soft-flex opener, receipt, flat correction. "I'm
|
|
11
|
+
sorry but I think you need to read the docs again [link]. Skills are
|
|
12
|
+
injected at session start..."
|
|
13
|
+
- **Wrong but polite:** skip the jab, open with the source or flat fact,
|
|
14
|
+
calm. Calm is not agreeing; the false premise still gets corrected.
|
|
15
|
+
- **Polite AND sharp but framing wrong (the dangerous one):** acknowledge
|
|
16
|
+
nothing false. Correction stated flat, one concrete consequence, stop.
|
|
17
|
+
- **True fact, false conclusion:** agree with the true fact plainly (that's
|
|
18
|
+
not a concession), then refute the conclusion hard. Two reusable moves:
|
|
19
|
+
the "it would already be baked in" move (if saying X were enough, Claude
|
|
20
|
+
would already do X by default), and SHOW the specific instead of
|
|
21
|
+
asserting it: give the actual list of concrete rules, and verify every
|
|
22
|
+
item is airtight; one vague bullet undercuts the whole point.
|
|
23
|
+
- **Confidently misframing:** flat correction, conclusion first, one
|
|
24
|
+
consequence, stop.
|
|
25
|
+
- **Genuine question (lost, not challenging):** straight into plain
|
|
26
|
+
language, lead with an analogy, end on a crisp one-line distinction
|
|
27
|
+
("skills help, hooks enforce").
|
|
28
|
+
- **Disagreeing with an upvoted crowd belief:** open hard, stack flat
|
|
29
|
+
declarative reasons, end with the fix. "I'm sorry but you are way off...
|
|
30
|
+
Just give it a detailed description of what you want built and how."
|
|
31
|
+
- **Praise:** take it cleanly. "Thanks brother. Appreciate it." No
|
|
32
|
+
deflecting, no over-thanking.
|
|
33
|
+
|
|
34
|
+
**Target register for replies (the author's own words, study it):**
|
|
35
|
+
> Hooks are the only thing that can cover you. There is no enforcement in
|
|
36
|
+
> a skill or in Claude.md for that matter. Hooks are the only thing that
|
|
37
|
+
> can stop Claude from reading, writing or piping a curl command through
|
|
38
|
+
> shell to steal all your personal information.
|
|
39
|
+
|
|
40
|
+
Conclusion first. Flat declaratives. Threat named plainly. Then it stops.
|