@litfamily/litcodex 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/LICENSE +21 -0
- package/README.md +293 -0
- package/bin/litcodex.js +12 -0
- package/dist/auto-update.d.ts +27 -0
- package/dist/auto-update.js +106 -0
- package/dist/cli-model-route.d.ts +7 -0
- package/dist/cli-model-route.js +47 -0
- package/dist/cli.d.ts +23 -0
- package/dist/cli.js +282 -0
- package/dist/config-migration/backup.d.ts +2 -0
- package/dist/config-migration/backup.js +42 -0
- package/dist/config-migration/catalog.d.ts +23 -0
- package/dist/config-migration/catalog.js +108 -0
- package/dist/config-migration/cli.d.ts +16 -0
- package/dist/config-migration/cli.js +186 -0
- package/dist/config-migration/config-file-io.d.ts +11 -0
- package/dist/config-migration/config-file-io.js +62 -0
- package/dist/config-migration/config-paths.d.ts +4 -0
- package/dist/config-migration/config-paths.js +64 -0
- package/dist/config-migration/errors.d.ts +11 -0
- package/dist/config-migration/errors.js +30 -0
- package/dist/config-migration/gpt56-policy.d.ts +53 -0
- package/dist/config-migration/gpt56-policy.js +158 -0
- package/dist/config-migration/index.d.ts +63 -0
- package/dist/config-migration/index.js +208 -0
- package/dist/config-migration/multi-agent-v2-guard.d.ts +26 -0
- package/dist/config-migration/multi-agent-v2-guard.js +166 -0
- package/dist/config-migration/native-default-route.d.ts +9 -0
- package/dist/config-migration/native-default-route.js +336 -0
- package/dist/config-migration/profile-files.d.ts +11 -0
- package/dist/config-migration/profile-files.js +72 -0
- package/dist/config-migration/root-settings.d.ts +10 -0
- package/dist/config-migration/root-settings.js +144 -0
- package/dist/config-migration/state.d.ts +16 -0
- package/dist/config-migration/state.js +40 -0
- package/dist/config-migration/toml-shape.d.ts +8 -0
- package/dist/config-migration/toml-shape.js +141 -0
- package/dist/config-migration/unsafe-route-guard.d.ts +1 -0
- package/dist/config-migration/unsafe-route-guard.js +17 -0
- package/dist/install/agent-routing.d.ts +19 -0
- package/dist/install/agent-routing.js +145 -0
- package/dist/install/agents-install.d.ts +40 -0
- package/dist/install/agents-install.js +211 -0
- package/dist/install/auth-mode.d.ts +4 -0
- package/dist/install/auth-mode.js +26 -0
- package/dist/install/bundled-skill-manifests.d.ts +25 -0
- package/dist/install/bundled-skill-manifests.js +25 -0
- package/dist/install/bundled-skills.d.ts +7 -0
- package/dist/install/bundled-skills.js +70 -0
- package/dist/install/capability-preflight-error.d.ts +3 -0
- package/dist/install/capability-preflight-error.js +33 -0
- package/dist/install/codex-version.d.ts +17 -0
- package/dist/install/codex-version.js +37 -0
- package/dist/install/codex.d.ts +56 -0
- package/dist/install/codex.js +164 -0
- package/dist/install/development-marketplace.d.ts +6 -0
- package/dist/install/development-marketplace.js +83 -0
- package/dist/install/doctor-config.d.ts +4 -0
- package/dist/install/doctor-config.js +54 -0
- package/dist/install/doctor-render.d.ts +2 -0
- package/dist/install/doctor-render.js +72 -0
- package/dist/install/doctor.d.ts +12 -0
- package/dist/install/doctor.js +223 -0
- package/dist/install/errors.d.ts +20 -0
- package/dist/install/errors.js +53 -0
- package/dist/install/execute.d.ts +56 -0
- package/dist/install/execute.js +221 -0
- package/dist/install/file-walk.d.ts +33 -0
- package/dist/install/file-walk.js +252 -0
- package/dist/install/generated-skill-payload-hashes.d.ts +330 -0
- package/dist/install/generated-skill-payload-hashes.js +331 -0
- package/dist/install/hook-verifier.d.ts +5 -0
- package/dist/install/hook-verifier.js +20 -0
- package/dist/install/host-capabilities.d.ts +23 -0
- package/dist/install/host-capabilities.js +177 -0
- package/dist/install/index.d.ts +27 -0
- package/dist/install/index.js +403 -0
- package/dist/install/install-model-prompt.d.ts +28 -0
- package/dist/install/install-model-prompt.js +82 -0
- package/dist/install/install-options.d.ts +9 -0
- package/dist/install/install-options.js +164 -0
- package/dist/install/install-output.d.ts +4 -0
- package/dist/install/install-output.js +12 -0
- package/dist/install/install-presentation.d.ts +13 -0
- package/dist/install/install-presentation.js +165 -0
- package/dist/install/install-ui.d.ts +25 -0
- package/dist/install/install-ui.js +109 -0
- package/dist/install/marketplace-payload.d.ts +10 -0
- package/dist/install/marketplace-payload.js +178 -0
- package/dist/install/marketplace.d.ts +18 -0
- package/dist/install/marketplace.js +74 -0
- package/dist/install/package-root.d.ts +13 -0
- package/dist/install/package-root.js +25 -0
- package/dist/install/plan.d.ts +3 -0
- package/dist/install/plan.js +54 -0
- package/dist/install/registration.d.ts +8 -0
- package/dist/install/registration.js +62 -0
- package/dist/install/render-plan.d.ts +3 -0
- package/dist/install/render-plan.js +16 -0
- package/dist/install/runtime-file-policy.d.ts +2 -0
- package/dist/install/runtime-file-policy.js +17 -0
- package/dist/install/skill-catalog.d.ts +17 -0
- package/dist/install/skill-catalog.js +111 -0
- package/dist/install/skill-resource-hashes.d.ts +1 -0
- package/dist/install/skill-resource-hashes.js +1 -0
- package/dist/install/spinner-motion.d.ts +2 -0
- package/dist/install/spinner-motion.js +51 -0
- package/dist/install/strict-config-probe.d.ts +14 -0
- package/dist/install/strict-config-probe.js +53 -0
- package/dist/install/types.d.ts +102 -0
- package/dist/install/types.js +5 -0
- package/dist/install/uninstall.d.ts +26 -0
- package/dist/install/uninstall.js +227 -0
- package/dist/postinstall.d.ts +1 -0
- package/dist/postinstall.js +35 -0
- package/dist/ui-style.d.ts +23 -0
- package/dist/ui-style.js +73 -0
- package/dist/ui.d.ts +10 -0
- package/dist/ui.js +25 -0
- package/dist/update-check.d.ts +101 -0
- package/dist/update-check.js +502 -0
- package/marketplace/.agents/plugins/marketplace.json +17 -0
- package/marketplace/plugins/litcodex/.codex-plugin/plugin.json +34 -0
- package/marketplace/plugins/litcodex/.mcp.json +1 -0
- package/marketplace/plugins/litcodex/assets/logo.png +0 -0
- package/marketplace/plugins/litcodex/components/auto-update/dist/auto-update.d.ts +117 -0
- package/marketplace/plugins/litcodex/components/auto-update/dist/auto-update.js +640 -0
- package/marketplace/plugins/litcodex/components/auto-update/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/auto-update/dist/cli.js +103 -0
- package/marketplace/plugins/litcodex/components/auto-update/package.json +22 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/apply-patch.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/apply-patch.js +173 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/cli.js +10 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/codex-hook.d.ts +22 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/codex-hook.js +165 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/core-values.d.ts +1 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/core-values.js +1 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/core.d.ts +5 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/core.js +4 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/hook-input.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/hook-input.js +10 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/record.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/record.js +11 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/request-extractor.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/request-extractor.js +104 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/runner.d.ts +26 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/runner.js +144 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/types.d.ts +43 -0
- package/marketplace/plugins/litcodex/components/comment-checker/dist/types.js +1 -0
- package/marketplace/plugins/litcodex/components/comment-checker/package.json +22 -0
- package/marketplace/plugins/litcodex/components/git-bash/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/git-bash/dist/cli.js +29 -0
- package/marketplace/plugins/litcodex/components/git-bash/dist/codex-hook.d.ts +28 -0
- package/marketplace/plugins/litcodex/components/git-bash/dist/codex-hook.js +137 -0
- package/marketplace/plugins/litcodex/components/git-bash/dist/index.d.ts +1 -0
- package/marketplace/plugins/litcodex/components/git-bash/dist/index.js +1 -0
- package/marketplace/plugins/litcodex/components/git-bash/package.json +22 -0
- package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-default.toml +14 -0
- package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-explorer.toml +81 -0
- package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-librarian.toml +104 -0
- package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-litwork-reviewer.toml +41 -0
- package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-metis.toml +71 -0
- package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-momus.toml +75 -0
- package/marketplace/plugins/litcodex/components/lit-loop/agents/litcodex-plan.toml +193 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directive.md +240 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/browser-drive.md +140 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/deep-interview.md +250 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-comprehend.md +247 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-crucible.md +254 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-handoff.md +126 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-init.md +140 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-plan.md +472 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-recap.md +209 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/lit-scientific-visualization.md +144 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/litgoal.md +231 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/litresearch.md +218 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/litwork.md +507 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/review-work.md +184 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/skill-observer.md +105 -0
- package/marketplace/plugins/litcodex/components/lit-loop/directives/start-work.md +149 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/_scaffold.d.ts +1 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/_scaffold.js +3 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/browser-drive-route.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/browser-drive-route.js +13 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/cli.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/cli.js +64 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-goal-instruction.d.ts +18 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-goal-instruction.js +146 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-hook.d.ts +53 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/codex-hook.js +228 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/directive.d.ts +43 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/directive.js +139 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/goal-status.d.ts +14 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/goal-status.js +32 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/guards.d.ts +73 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/guards.js +215 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/handoff-route.d.ts +5 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/handoff-route.js +11 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/hook-cli.d.ts +19 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/hook-cli.js +189 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/lit-mark.d.ts +20 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/lit-mark.js +138 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-cli.d.ts +19 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-cli.js +109 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-render.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-render.js +39 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-types.d.ts +52 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor-types.js +7 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor.d.ts +34 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-doctor.js +336 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-errors.d.ts +15 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-errors.js +45 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-handlers.d.ts +18 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-handlers.js +367 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-model.d.ts +51 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-model.js +166 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-stdout.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-stdout.js +11 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-types.d.ts +26 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/loop-types.js +8 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/markers.d.ts +33 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/markers.js +38 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/modes.d.ts +29 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/modes.js +176 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/plan-persistence.d.ts +20 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/plan-persistence.js +147 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/redaction.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/redaction.js +177 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/scientific-visualization-route.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/scientific-visualization-route.js +15 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/apply.d.ts +16 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/apply.js +227 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/config.d.ts +13 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/config.js +12 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/curator.d.ts +14 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/curator.js +112 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/hook.d.ts +19 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/hook.js +435 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/ownership.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/ownership.js +145 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/paths.d.ts +18 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/paths.js +43 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/review.d.ts +28 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/review.js +702 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/store.d.ts +32 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/store.js +667 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/transaction.d.ts +26 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/transaction.js +524 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/types.d.ts +81 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/types.js +246 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/usage.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop/usage.js +119 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop-cli.d.ts +8 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-loop-cli.js +111 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-mention-scope.d.ts +4 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-mention-scope.js +69 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-cli.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-cli.js +116 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-route.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer-route.js +12 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer.d.ts +18 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-observer.js +946 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-renames.d.ts +20 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/skill-renames.js +43 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/state-paths.d.ts +43 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/state-paths.js +121 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/state-store.d.ts +40 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/state-store.js +471 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/state-types.d.ts +121 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/state-types.js +67 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/trigger.d.ts +62 -0
- package/marketplace/plugins/litcodex/components/lit-loop/dist/trigger.js +277 -0
- package/marketplace/plugins/litcodex/components/lit-loop/package.json +33 -0
- package/marketplace/plugins/litcodex/components/lsp/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/lsp/dist/cli.js +48 -0
- package/marketplace/plugins/litcodex/components/lsp/dist/codex-hook.d.ts +18 -0
- package/marketplace/plugins/litcodex/components/lsp/dist/codex-hook.js +53 -0
- package/marketplace/plugins/litcodex/components/lsp/package.json +22 -0
- package/marketplace/plugins/litcodex/components/rules/bundled-rules/baseline-discipline.md +53 -0
- package/marketplace/plugins/litcodex/components/rules/bundled-rules/build-decision-gate.md +20 -0
- package/marketplace/plugins/litcodex/components/rules/bundled-rules/windows-git-bash.md +10 -0
- package/marketplace/plugins/litcodex/components/rules/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/rules/dist/cli.js +148 -0
- package/marketplace/plugins/litcodex/components/rules/dist/codex-hook-options.d.ts +5 -0
- package/marketplace/plugins/litcodex/components/rules/dist/codex-hook-options.js +1 -0
- package/marketplace/plugins/litcodex/components/rules/dist/codex-hook.d.ts +47 -0
- package/marketplace/plugins/litcodex/components/rules/dist/codex-hook.js +137 -0
- package/marketplace/plugins/litcodex/components/rules/dist/config.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/rules/dist/config.js +99 -0
- package/marketplace/plugins/litcodex/components/rules/dist/context-pressure.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/rules/dist/context-pressure.js +26 -0
- package/marketplace/plugins/litcodex/components/rules/dist/debug-log.d.ts +8 -0
- package/marketplace/plugins/litcodex/components/rules/dist/debug-log.js +36 -0
- package/marketplace/plugins/litcodex/components/rules/dist/deliverable-hedge-guard.d.ts +36 -0
- package/marketplace/plugins/litcodex/components/rules/dist/deliverable-hedge-guard.js +434 -0
- package/marketplace/plugins/litcodex/components/rules/dist/dynamic-target-fingerprints.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/rules/dist/dynamic-target-fingerprints.js +65 -0
- package/marketplace/plugins/litcodex/components/rules/dist/event-budget.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/rules/dist/event-budget.js +28 -0
- package/marketplace/plugins/litcodex/components/rules/dist/hook-output.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/rules/dist/hook-output.js +24 -0
- package/marketplace/plugins/litcodex/components/rules/dist/model-metadata.d.ts +14 -0
- package/marketplace/plugins/litcodex/components/rules/dist/model-metadata.js +101 -0
- package/marketplace/plugins/litcodex/components/rules/dist/output-style-injection.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/rules/dist/output-style-injection.js +53 -0
- package/marketplace/plugins/litcodex/components/rules/dist/path-utils.d.ts +4 -0
- package/marketplace/plugins/litcodex/components/rules/dist/path-utils.js +24 -0
- package/marketplace/plugins/litcodex/components/rules/dist/persistent-cache.d.ts +14 -0
- package/marketplace/plugins/litcodex/components/rules/dist/persistent-cache.js +180 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-budget.d.ts +8 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-budget.js +103 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-claim.d.ts +4 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-claim.js +6 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-directive.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-directive.js +55 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-state.d.ts +13 -0
- package/marketplace/plugins/litcodex/components/rules/dist/post-compact-state.js +29 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/cache.d.ts +9 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/cache.js +51 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/constants.d.ts +70 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/constants.js +100 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-cache.d.ts +5 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-cache.js +60 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-loader.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-dynamic-loader.js +61 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-loader.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-loader.js +60 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-paths.d.ts +11 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-paths.js +75 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-static-loader.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-static-loader.js +29 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-types.d.ts +47 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine-types.js +1 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine.d.ts +5 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/engine.js +90 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/errors.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/errors.js +12 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-cache.d.ts +14 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-cache.js +51 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-paths.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-paths.js +33 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-sources.d.ts +5 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder-sources.js +39 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder.d.ts +28 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/finder.js +146 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/formatter.d.ts +13 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/formatter.js +156 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/matcher.d.ts +18 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/matcher.js +93 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/ordering.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/ordering.js +27 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-frontmatter.d.ts +7 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-frontmatter.js +30 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-yaml.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/parser-yaml.js +237 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/parser.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/parser.js +31 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/plugin-root.d.ts +1 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/plugin-root.js +48 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/project-root.d.ts +1 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/project-root.js +23 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/scanner.d.ts +14 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/scanner.js +111 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/sources.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/sources.js +9 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/truncator.d.ts +19 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/truncator.js +62 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/types.d.ts +126 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules/types.js +8 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules-engine-factory.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/rules/dist/rules-engine-factory.js +20 -0
- package/marketplace/plugins/litcodex/components/rules/dist/session-state-lock.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/rules/dist/session-state-lock.js +41 -0
- package/marketplace/plugins/litcodex/components/rules/dist/shell-awareness.d.ts +10 -0
- package/marketplace/plugins/litcodex/components/rules/dist/shell-awareness.js +90 -0
- package/marketplace/plugins/litcodex/components/rules/dist/stable-file-read.d.ts +18 -0
- package/marketplace/plugins/litcodex/components/rules/dist/stable-file-read.js +120 -0
- package/marketplace/plugins/litcodex/components/rules/dist/static-injection.d.ts +3 -0
- package/marketplace/plugins/litcodex/components/rules/dist/static-injection.js +183 -0
- package/marketplace/plugins/litcodex/components/rules/dist/tool-paths.d.ts +6 -0
- package/marketplace/plugins/litcodex/components/rules/dist/tool-paths.js +168 -0
- package/marketplace/plugins/litcodex/components/rules/dist/transcript-rule-filter.d.ts +4 -0
- package/marketplace/plugins/litcodex/components/rules/dist/transcript-rule-filter.js +31 -0
- package/marketplace/plugins/litcodex/components/rules/dist/transcript-search.d.ts +5 -0
- package/marketplace/plugins/litcodex/components/rules/dist/transcript-search.js +191 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/LICENSE +21 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/README.md +749 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/index.js +17 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/constants.js +184 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/parse.js +1386 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/picomatch.js +349 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/scan.js +391 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/lib/utils.js +72 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/package.json +82 -0
- package/marketplace/plugins/litcodex/components/rules/node_modules/picomatch/posix.js +3 -0
- package/marketplace/plugins/litcodex/components/rules/package.json +30 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/directive.md +109 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/cli.js +345 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/codex-hook.d.ts +12 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/codex-hook.js +292 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/directive.d.ts +1 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/directive.js +2 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/index.d.ts +11 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/index.js +6 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/lifecycle-store.d.ts +161 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/lifecycle-store.js +1664 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-progress.d.ts +11 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-progress.js +86 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-publisher.d.ts +11 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/plan-publisher.js +183 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/types.d.ts +28 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/types.js +1 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/work-state-reader.d.ts +44 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/dist/work-state-reader.js +67 -0
- package/marketplace/plugins/litcodex/components/start-work-continuation/package.json +24 -0
- package/marketplace/plugins/litcodex/components/telemetry/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/telemetry/dist/cli.js +62 -0
- package/marketplace/plugins/litcodex/components/telemetry/dist/codex-hook.d.ts +14 -0
- package/marketplace/plugins/litcodex/components/telemetry/dist/codex-hook.js +14 -0
- package/marketplace/plugins/litcodex/components/telemetry/dist/provider-cache.d.ts +66 -0
- package/marketplace/plugins/litcodex/components/telemetry/dist/provider-cache.js +117 -0
- package/marketplace/plugins/litcodex/components/telemetry/package.json +22 -0
- package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/cli.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/cli.js +131 -0
- package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/knowledge.d.ts +72 -0
- package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/knowledge.js +623 -0
- package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/strict-json.d.ts +2 -0
- package/marketplace/plugins/litcodex/components/wikify-knowledge/dist/strict-json.js +94 -0
- package/marketplace/plugins/litcodex/components/wikify-knowledge/package.json +22 -0
- package/marketplace/plugins/litcodex/hooks/hooks.json +215 -0
- package/marketplace/plugins/litcodex/skills/autoconference/LICENSE +21 -0
- package/marketplace/plugins/litcodex/skills/autoconference/PROVENANCE.md +23 -0
- package/marketplace/plugins/litcodex/skills/autoconference/SKILL.md +139 -0
- package/marketplace/plugins/litcodex/skills/autoconference/assets/conference_template.md +76 -0
- package/marketplace/plugins/litcodex/skills/autoconference/assets/report_template.md +56 -0
- package/marketplace/plugins/litcodex/skills/autoconference/assets/synthesis_template.md +40 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/agent-prompts.md +30 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/conference-protocol.md +21 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/core-principles.md +13 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/family-contract.md +26 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/analyze.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/core/convergence-guide.md +41 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/core/crash-recovery.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/core.md +25 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/debate.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/plan.md +12 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/resume.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/ship.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/modes/survey.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/results-logging.md +12 -0
- package/marketplace/plugins/litcodex/skills/autoconference/references/visualization-guide.md +10 -0
- package/marketplace/plugins/litcodex/skills/autoconference/scripts/init_conference.py +656 -0
- package/marketplace/plugins/litcodex/skills/autoconference/templates/code-performance.md +59 -0
- package/marketplace/plugins/litcodex/skills/autoconference/templates/debate-mode.md +50 -0
- package/marketplace/plugins/litcodex/skills/autoconference/templates/prompt-optimization.md +58 -0
- package/marketplace/plugins/litcodex/skills/autoconference/templates/quick-conference.md +48 -0
- package/marketplace/plugins/litcodex/skills/autoconference/templates/research-synthesis.md +56 -0
- package/marketplace/plugins/litcodex/skills/autoconference/templates/survey-mode.md +63 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/LICENSE +21 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/PROVENANCE.md +22 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/SKILL.md +142 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/assets/report_template.md +52 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/assets/research_template.md +38 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/assets/results_template.tsv +2 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/core-principles.md +16 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/family-contract.md +36 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/core/evaluator-contract.md +12 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/core/stuck-detection.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/core.md +21 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/debug/investigation-techniques.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/debug.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/fix.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/learn.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/plan.md +14 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/predict/persona-templates.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/predict.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/reason.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/scenario/dimensions.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/scenario.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/security/owasp-checklist.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/security/stride-model.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/security.md +12 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/ship/type-checklists.md +12 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/modes/ship.md +11 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/results-logging.md +12 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/references/visualization-guide.md +24 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/scripts/init_research.py +401 -0
- package/marketplace/plugins/litcodex/skills/autoresearch/scripts/style_presets.py +123 -0
- package/marketplace/plugins/litcodex/skills/browser-drive/SKILL.md +206 -0
- package/marketplace/plugins/litcodex/skills/browser-drive/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/browser-drive/references/snapshot-act-loop.md +48 -0
- package/marketplace/plugins/litcodex/skills/browser-drive/scripts/capability-probe.mjs +437 -0
- package/marketplace/plugins/litcodex/skills/coding-session-audit/SKILL.md +299 -0
- package/marketplace/plugins/litcodex/skills/coding-session-audit/references/continuation-and-handoff.md +206 -0
- package/marketplace/plugins/litcodex/skills/coding-session-audit/references/read-only-recipes.md +246 -0
- package/marketplace/plugins/litcodex/skills/coding-session-audit/references/session-formats.md +246 -0
- package/marketplace/plugins/litcodex/skills/comment-checker/SKILL.md +169 -0
- package/marketplace/plugins/litcodex/skills/comment-checker/references/comment-policy.md +83 -0
- package/marketplace/plugins/litcodex/skills/debugging/SKILL.md +259 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/00-setup.md +108 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/02-investigate.md +124 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/04-oracle-triple.md +129 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/05-escalate.md +70 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/06-fix.md +116 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/08-qa.md +94 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/09-cleanup.md +164 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/methodology/partial-runtime-evidence.md +223 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/go.md +252 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/native-binary.md +484 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/node.md +260 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/python.md +248 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/runtimes/rust.md +234 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/tools/ghidra.md +212 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/tools/playwright-cli.md +194 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/tools/pwndbg.md +263 -0
- package/marketplace/plugins/litcodex/skills/debugging/references/tools/pwntools.md +265 -0
- package/marketplace/plugins/litcodex/skills/deep-interview/SKILL.md +339 -0
- package/marketplace/plugins/litcodex/skills/deep-interview/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/SKILL.md +62 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/MANIFEST.json +869 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/PROVENANCE.md +24 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/README.md +248 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/_INDEX.md +191 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/airbnb.md +393 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/airtable.md +92 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/apple.md +250 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/aside.md +209 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/binance.md +348 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/bmw.md +183 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/brutalist-skill.md +92 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/bugatti.md +271 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/cal.md +262 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/claude.md +315 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/clay.md +307 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/clickhouse.md +284 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/clone-from-url.md +65 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/cohere.md +269 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/coinbase.md +132 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/composio.md +310 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/cursor.md +312 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/design-system-architecture.md +244 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/elevenlabs.md +268 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/expo.md +284 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/ferrari.md +317 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/figma.md +223 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/framer.md +249 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/gpt-tasteskill.md +74 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/hashicorp.md +281 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/ibm.md +335 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/image-to-code-skill.md +1228 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/imagegen-brandkit.md +798 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/imagegen-frontend-mobile.md +1465 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/imagegen-frontend-web.md +987 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/intercom.md +149 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/kraken.md +128 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/lamborghini.md +291 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/layout-skill.md +107 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/lazyweb.md +77 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/linear.app.md +370 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/lovable.md +301 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mastercard.md +368 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/meta.md +369 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/minimalist-skill.md +85 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/minimax.md +260 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mintlify.md +329 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/miro.md +111 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mistral.ai.md +264 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/mongodb.md +269 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/nike.md +366 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/notion.md +312 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/nvidia.md +296 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/ollama.md +270 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/opencode.ai.md +284 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/output-skill.md +49 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/pinterest.md +233 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/playstation.md +367 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/posthog.md +259 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/raycast.md +271 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/react-dev-tooling-skill.md +230 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/redesign-skill.md +178 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/renault.md +314 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/replicate.md +264 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/resend.md +306 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/revolut.md +188 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/runwayml.md +247 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/sanity.md +360 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/sentry.md +265 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/shopify.md +353 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/soft-skill.md +98 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/spacex.md +197 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/spotify.md +249 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/starbucks.md +583 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/stitch-design-example.md +121 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/stitch-skill.md +184 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/stripe.md +325 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/supabase.md +258 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/superhuman.md +255 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/taste-skill.md +1206 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/tesla.md +289 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/theverge.md +342 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/together.ai.md +266 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/uber.md +298 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/vercel.md +313 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/vodafone.md +426 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/voltagent.md +326 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/warp.md +256 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/webflow.md +95 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/wired.md +281 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/wise.md +176 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/x.ai.md +260 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/design/zapier.md +331 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/EVIDENCE.md +97 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/README.md +48 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/UPSTREAM.md +80 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-a-direction.md +64 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-b-execution.md +65 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-c-review.md +65 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/lane-d-memory.md +83 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/orchestration.md +80 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/routing.md +79 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/LICENSE +21 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/content-writer.md +132 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-builder.md +109 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-critic.md +89 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-lead.md +113 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-scout.md +78 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/design-strategist.md +121 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/agents/motion-designer.md +120 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/accessible-content/reference.md +101 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-debate/reference.md +199 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-handoff/reference.md +125 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-md/reference.md +106 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-review/reference.md +123 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/interaction-design/reference.md +122 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/research-planning/reference.md +96 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/taste-report/reference.md +78 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/token-architecture/reference.md +75 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/ui-composition/reference.md +117 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/usability-testing/reference.md +78 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/perfection/README.md +160 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/perfection/react-perf-tooling.md +127 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/README.md +659 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/charts.csv +26 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/colors.csv +162 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/icons.csv +106 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/landing.csv +35 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/products.csv +162 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/react-performance.csv +45 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/astro.csv +54 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/flutter.csv +53 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/nextjs.csv +53 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/react-native.csv +52 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/react.csv +54 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/shadcn.csv +61 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/svelte.csv +54 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/swiftui.csv +51 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/stacks/vue.csv +50 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/styles.csv +85 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/typography.csv +74 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/ui-reasoning.csv +162 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/ux-guidelines.csv +100 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/data/web-interface.csv +31 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/scripts/core.py +262 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/scripts/design_system.py +1148 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/_canonical-corpus/ui-ux-db/scripts/search.py +114 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/adaptive-layout.md +94 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/brand-and-imagery.md +77 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/canonical-library.md +36 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/complete-contract.md +353 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/composition.md +90 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/creative-directions.md +89 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/evidence-review.md +127 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/implementation-platforms.md +77 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/inclusive-interface.md +97 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/interaction-motion.md +96 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/operating-lanes.md +110 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/performance-delivery.md +89 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/product-direction.md +101 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/redesign-playbook.md +91 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/system-foundations.md +114 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/taste-direction.md +27 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/visual-language.md +86 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/references/visual-reconstruction.md +88 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/schemas/design-contract.v1alpha1.json +299 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/schemas/design-contract.v1beta1.json +32 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/schemas/design-contract.v1beta2.json +34 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/canonical-json.mjs +186 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/stable-file-read.mjs +201 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/validate-design-contract.mjs +555 -0
- package/marketplace/plugins/litcodex/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +354 -0
- package/marketplace/plugins/litcodex/skills/lit-burnoff/SKILL.md +489 -0
- package/marketplace/plugins/litcodex/skills/lit-burnoff/references/behavior-preserving-cleanup.md +105 -0
- package/marketplace/plugins/litcodex/skills/lit-burnoff-file/SKILL.md +169 -0
- package/marketplace/plugins/litcodex/skills/lit-code/SKILL.md +628 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/engineering-risk-signals.md +123 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/README.md +90 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/backend-stack.md +641 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/bootstrap.md +328 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/bubbletea-v2.md +360 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/cobra-stack.md +468 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/concurrency.md +362 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/data-modeling.md +329 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/error-handling.md +359 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/golangci-strict.md +236 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/grpc-connect.md +375 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/libraries.md +337 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/one-liners.md +202 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/sqlc-pgx.md +471 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/testing.md +467 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/go/type-patterns.md +298 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/observability-contracts.md +124 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/README.md +314 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/async-anyio.md +442 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/data-modeling.md +233 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/data-processing.md +133 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/error-handling.md +218 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/fastapi-stack.md +316 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/httpx2-optimization.md +360 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/libraries.md +307 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/one-liners.md +268 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/orjson-stack.md +378 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/pydantic-ai.md +285 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/pyproject-strict.md +232 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/textual-tui.md +201 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/python/type-patterns.md +176 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/README.md +317 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/async-tokio.md +299 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/axum-stack.md +467 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/cargo-strict.md +317 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/clap-stack.md +409 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/concurrency.md +375 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/libraries.md +439 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/one-liners.md +291 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/proptest-insta.md +429 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/type-state.md +354 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/unsafe-discipline.md +250 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust/zero-cost-safety.md +527 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust-ub/README.md +289 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust-ub/miri-sanitizers-loom.md +411 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/rust-ub/ub-taxonomy.md +269 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/README.md +195 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/backend-hono.md +672 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/bootstrap.md +199 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/data-modeling.md +202 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/error-handling.md +169 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/tsconfig-strict.md +152 -0
- package/marketplace/plugins/litcodex/skills/lit-code/references/typescript/type-patterns.md +196 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/check-no-excuse-rules.sh +173 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/new-project.py +138 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/.editorconfig +13 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/.golangci.yml +95 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/AGENTS.md.tmpl +24 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/README.md.tmpl +12 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/Taskfile.yml +40 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/ci.yml +37 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/config.go +24 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/gitignore +15 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/main.go.tmpl +22 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/go/templates/run.go +15 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/python/check-no-excuse-rules.py +687 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/python/new-project.py +172 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/python/new-script.py +116 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/rust/check-no-excuse-rules.py +296 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/rust/check-no-excuse-rules.sh +158 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/rust/new-project.py +175 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/typescript/check-no-excuse-rules.ts +344 -0
- package/marketplace/plugins/litcodex/skills/lit-code/scripts/typescript/new-project.ts +174 -0
- package/marketplace/plugins/litcodex/skills/lit-commit/SKILL.md +254 -0
- package/marketplace/plugins/litcodex/skills/lit-commit/agents/openai.yaml +13 -0
- package/marketplace/plugins/litcodex/skills/lit-commit/references/safe-git-operations.md +123 -0
- package/marketplace/plugins/litcodex/skills/lit-comprehend/SKILL.md +472 -0
- package/marketplace/plugins/litcodex/skills/lit-comprehend/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/lit-comprehend/assets/explainer-scaffold.html +231 -0
- package/marketplace/plugins/litcodex/skills/lit-comprehend/references/artifact-template.md +211 -0
- package/marketplace/plugins/litcodex/skills/lit-comprehend/references/micro-worlds.md +190 -0
- package/marketplace/plugins/litcodex/skills/lit-comprehend/scripts/verify-explainer.ts +409 -0
- package/marketplace/plugins/litcodex/skills/lit-crucible/SKILL.md +321 -0
- package/marketplace/plugins/litcodex/skills/lit-crucible/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/lit-crucible/references/adversarial-workflow.md +142 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/SKILL.md +326 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/references/ab-eval.md +36 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/references/discovery-evidence.md +200 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/references/workflow.md +137 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/fetch.mjs +122 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/reader.mjs +115 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/redaction.mjs +53 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/report.mjs +190 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/routes.mjs +56 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/safety.mjs +165 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/lib/validate.mjs +189 -0
- package/marketplace/plugins/litcodex/skills/lit-fetch/scripts/read-public-page.mjs +61 -0
- package/marketplace/plugins/litcodex/skills/lit-handoff/SKILL.md +231 -0
- package/marketplace/plugins/litcodex/skills/lit-init/SKILL.md +474 -0
- package/marketplace/plugins/litcodex/skills/lit-init/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/lit-init/references/deep-repository-map.md +116 -0
- package/marketplace/plugins/litcodex/skills/lit-korean/SKILL.md +206 -0
- package/marketplace/plugins/litcodex/skills/lit-korean/references/prompt-injection-handling.md +23 -0
- package/marketplace/plugins/litcodex/skills/lit-korean/references/quick-rules.md +38 -0
- package/marketplace/plugins/litcodex/skills/lit-korean/references/safety-checklist.md +38 -0
- package/marketplace/plugins/litcodex/skills/lit-loop/.gitkeep +0 -0
- package/marketplace/plugins/litcodex/skills/lit-loop/SKILL.md +202 -0
- package/marketplace/plugins/litcodex/skills/lit-loop/agents/openai.yaml +9 -0
- package/marketplace/plugins/litcodex/skills/lit-loop/references/full-workflow.md +290 -0
- package/marketplace/plugins/litcodex/skills/lit-plan/SKILL.md +384 -0
- package/marketplace/plugins/litcodex/skills/lit-plan/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/lit-plan/references/full-workflow.md +188 -0
- package/marketplace/plugins/litcodex/skills/lit-plan/references/intent-clear.md +67 -0
- package/marketplace/plugins/litcodex/skills/lit-plan/references/intent-unclear.md +88 -0
- package/marketplace/plugins/litcodex/skills/lit-recap/SKILL.md +222 -0
- package/marketplace/plugins/litcodex/skills/lit-recap/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/lit-scientific-visualization/SKILL.md +255 -0
- package/marketplace/plugins/litcodex/skills/lit-scientific-visualization/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/lit-scientific-visualization/scripts/dependency-preflight.py +233 -0
- package/marketplace/plugins/litcodex/skills/lit-team/SKILL.md +190 -0
- package/marketplace/plugins/litcodex/skills/lit-team/references/team-orchestration.md +147 -0
- package/marketplace/plugins/litcodex/skills/lit-team/scripts/owner-lock.mjs +82 -0
- package/marketplace/plugins/litcodex/skills/lit-team/scripts/team-guide.mjs +31 -0
- package/marketplace/plugins/litcodex/skills/lit-team/scripts/team-state.mjs +262 -0
- package/marketplace/plugins/litcodex/skills/lit-team/scripts/team.mjs +145 -0
- package/marketplace/plugins/litcodex/skills/litcodex-contribute-bug-fix/SKILL.md +386 -0
- package/marketplace/plugins/litcodex/skills/litcodex-contribute-bug-fix/agents/openai.yaml +12 -0
- package/marketplace/plugins/litcodex/skills/litcodex-contribute-bug-fix/scripts/create-pr-body.mjs +107 -0
- package/marketplace/plugins/litcodex/skills/litcodex-doctor/SKILL.md +322 -0
- package/marketplace/plugins/litcodex/skills/litcodex-doctor/agents/openai.yaml +11 -0
- package/marketplace/plugins/litcodex/skills/litcodex-report-bug/SKILL.md +429 -0
- package/marketplace/plugins/litcodex/skills/litcodex-report-bug/agents/openai.yaml +10 -0
- package/marketplace/plugins/litcodex/skills/litgoal/SKILL.md +209 -0
- package/marketplace/plugins/litcodex/skills/litgoal/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/litresearch/SKILL.md +572 -0
- package/marketplace/plugins/litcodex/skills/litresearch/references/research-operations.md +158 -0
- package/marketplace/plugins/litcodex/skills/litwork/SKILL.md +238 -0
- package/marketplace/plugins/litcodex/skills/litwork/references/delivery-playbook.md +228 -0
- package/marketplace/plugins/litcodex/skills/lsp/SKILL.md +193 -0
- package/marketplace/plugins/litcodex/skills/lsp/references/runtime-triage.md +153 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/SKILL.md +326 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/bash/README.md +60 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/c-cpp/README.md +61 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/csharp/README.md +71 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/dart/README.md +48 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/elixir/README.md +51 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/go/README.md +57 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/haskell/README.md +57 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/java/README.md +57 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/julia/README.md +60 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/kotlin/README.md +59 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/lua/README.md +66 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/php/README.md +62 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/python/README.md +71 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/ruby/README.md +53 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/rust/README.md +59 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/swift/README.md +51 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/terraform/README.md +62 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/typescript/README.md +77 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/yaml/README.md +70 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/references/zig/README.md +49 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/lsp-server-table.ts +175 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/tsconfig.json +18 -0
- package/marketplace/plugins/litcodex/skills/lsp-setup/scripts/verify-lsp.ts +232 -0
- package/marketplace/plugins/litcodex/skills/refactor/SKILL.md +358 -0
- package/marketplace/plugins/litcodex/skills/refactor/references/safe-change-playbook.md +155 -0
- package/marketplace/plugins/litcodex/skills/review-work/SKILL.md +867 -0
- package/marketplace/plugins/litcodex/skills/review-work/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/review-work/references/blocking-review-gates.md +108 -0
- package/marketplace/plugins/litcodex/skills/rules/SKILL.md +181 -0
- package/marketplace/plugins/litcodex/skills/rules/references/rule-discovery-and-matching.md +112 -0
- package/marketplace/plugins/litcodex/skills/skill-observer/SKILL.md +215 -0
- package/marketplace/plugins/litcodex/skills/skill-observer/agents/openai.yaml +6 -0
- package/marketplace/plugins/litcodex/skills/skill-observer/references/review-contract.md +77 -0
- package/marketplace/plugins/litcodex/skills/start-work/SKILL.md +503 -0
- package/marketplace/plugins/litcodex/skills/start-work/references/approved-plan-execution.md +124 -0
- package/marketplace/plugins/litcodex/skills/structural-search/SKILL.md +359 -0
- package/marketplace/plugins/litcodex/skills/structural-search/references/diagnostics.md +307 -0
- package/marketplace/plugins/litcodex/skills/structural-search/references/patterns-and-rules.md +381 -0
- package/marketplace/plugins/litcodex/skills/structural-search/references/rewrite-safety.md +266 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/SKILL.md +68 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/references/capture-playbook.md +141 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/references/complete-contract.md +389 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/schemas/design-contract.v1alpha1.json +299 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/schemas/design-contract.v1beta1.json +32 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/schemas/design-contract.v1beta2.json +34 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/schemas/evidence-manifest.v1alpha1.json +117 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/schemas/evidence-manifest.v1beta1.json +80 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/schemas/review-receipt.v1alpha1.json +57 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/ansi.mjs +71 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/cli.mjs +54 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/east-asian-width.mjs +31 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/entrypoint.mjs +1 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/evidence-bytes.mjs +61 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/image-diff.mjs +63 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/png-crc.mjs +19 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/png-decode.mjs +169 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/strict-input.mjs +241 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/tui-grid.mjs +117 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/types.mjs +7 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/validate-design-contract.mjs +547 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/validate-evidence.mjs +392 -0
- package/marketplace/plugins/litcodex/skills/visual-qa/scripts/validate-review-receipt.mjs +79 -0
- package/marketplace/plugins/litcodex/skills/wikify/LICENSE +21 -0
- package/marketplace/plugins/litcodex/skills/wikify/PROVENANCE.md +20 -0
- package/marketplace/plugins/litcodex/skills/wikify/SKILL.md +146 -0
- package/marketplace/plugins/litcodex/skills/wikify/assets/home-template.md +44 -0
- package/marketplace/plugins/litcodex/skills/wikify/assets/maintenance-report-template.md +46 -0
- package/marketplace/plugins/litcodex/skills/wikify/assets/paper-source-note-template.md +137 -0
- package/marketplace/plugins/litcodex/skills/wikify/assets/source-note-template.md +45 -0
- package/marketplace/plugins/litcodex/skills/wikify/assets/wiki-rules-template.md +117 -0
- package/marketplace/plugins/litcodex/skills/wikify/references/family-contract.md +26 -0
- package/marketplace/plugins/litcodex/skills/wikify/references/modes/ingest.md +12 -0
- package/marketplace/plugins/litcodex/skills/wikify/references/modes/init.md +11 -0
- package/marketplace/plugins/litcodex/skills/wikify/references/modes/lint.md +11 -0
- package/marketplace/plugins/litcodex/skills/wikify/references/modes/query.md +15 -0
- package/marketplace/plugins/litcodex/skills/wikify/references/modes/save.md +17 -0
- package/marketplace/plugins/litcodex/vendor/NOTICE +19 -0
- package/marketplace/plugins/litcodex/vendor/handoff/SKILL.md +199 -0
- package/marketplace/plugins/litcodex/vendor/handoff/evals/evals.json +154 -0
- package/marketplace/plugins/litcodex/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/marketplace/plugins/litcodex/vendor/handoff/templates/HANDOFF.md +121 -0
- package/marketplace/plugins/litcodex/vendor/licenses/022_handoff-MIT.txt +21 -0
- package/marketplace/plugins/litcodex/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/marketplace/plugins/litcodex/vendor/provenance/022_handoff.md +25 -0
- package/marketplace/plugins/litcodex/vendor/provenance/045_scientific-visualization.md +42 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/SKILL.md +283 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/color_palettes.py +197 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/evals/evals.json +158 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/color_palettes.md +380 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/journal_requirements.md +359 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/scripts/figure_export.py +238 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/scripts/style_presets.py +467 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
- package/marketplace/plugins/litcodex/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
- package/model-catalog.json +36 -0
- package/node_modules/@litcodex/lit-loop/CHANGELOG.md +49 -0
- package/node_modules/@litcodex/lit-loop/LICENSE +21 -0
- package/node_modules/@litcodex/lit-loop/NOTICE +8 -0
- package/node_modules/@litcodex/lit-loop/README.md +55 -0
- package/node_modules/@litcodex/lit-loop/agents/litcodex-default.toml +14 -0
- package/node_modules/@litcodex/lit-loop/agents/litcodex-explorer.toml +81 -0
- package/node_modules/@litcodex/lit-loop/agents/litcodex-librarian.toml +104 -0
- package/node_modules/@litcodex/lit-loop/agents/litcodex-litwork-reviewer.toml +41 -0
- package/node_modules/@litcodex/lit-loop/agents/litcodex-metis.toml +71 -0
- package/node_modules/@litcodex/lit-loop/agents/litcodex-momus.toml +75 -0
- package/node_modules/@litcodex/lit-loop/agents/litcodex-plan.toml +193 -0
- package/node_modules/@litcodex/lit-loop/directive.md +240 -0
- package/node_modules/@litcodex/lit-loop/directives/browser-drive.md +140 -0
- package/node_modules/@litcodex/lit-loop/directives/deep-interview.md +250 -0
- package/node_modules/@litcodex/lit-loop/directives/lit-comprehend.md +247 -0
- package/node_modules/@litcodex/lit-loop/directives/lit-crucible.md +254 -0
- package/node_modules/@litcodex/lit-loop/directives/lit-handoff.md +126 -0
- package/node_modules/@litcodex/lit-loop/directives/lit-init.md +140 -0
- package/node_modules/@litcodex/lit-loop/directives/lit-plan.md +472 -0
- package/node_modules/@litcodex/lit-loop/directives/lit-recap.md +209 -0
- package/node_modules/@litcodex/lit-loop/directives/lit-scientific-visualization.md +144 -0
- package/node_modules/@litcodex/lit-loop/directives/litgoal.md +231 -0
- package/node_modules/@litcodex/lit-loop/directives/litresearch.md +218 -0
- package/node_modules/@litcodex/lit-loop/directives/litwork.md +507 -0
- package/node_modules/@litcodex/lit-loop/directives/review-work.md +184 -0
- package/node_modules/@litcodex/lit-loop/directives/skill-observer.md +105 -0
- package/node_modules/@litcodex/lit-loop/directives/start-work.md +149 -0
- package/node_modules/@litcodex/lit-loop/dist/_scaffold.d.ts +1 -0
- package/node_modules/@litcodex/lit-loop/dist/_scaffold.js +3 -0
- package/node_modules/@litcodex/lit-loop/dist/browser-drive-route.d.ts +7 -0
- package/node_modules/@litcodex/lit-loop/dist/browser-drive-route.js +13 -0
- package/node_modules/@litcodex/lit-loop/dist/cli.d.ts +6 -0
- package/node_modules/@litcodex/lit-loop/dist/cli.js +64 -0
- package/node_modules/@litcodex/lit-loop/dist/codex-goal-instruction.d.ts +18 -0
- package/node_modules/@litcodex/lit-loop/dist/codex-goal-instruction.js +146 -0
- package/node_modules/@litcodex/lit-loop/dist/codex-hook.d.ts +53 -0
- package/node_modules/@litcodex/lit-loop/dist/codex-hook.js +228 -0
- package/node_modules/@litcodex/lit-loop/dist/directive.d.ts +43 -0
- package/node_modules/@litcodex/lit-loop/dist/directive.js +139 -0
- package/node_modules/@litcodex/lit-loop/dist/goal-status.d.ts +14 -0
- package/node_modules/@litcodex/lit-loop/dist/goal-status.js +32 -0
- package/node_modules/@litcodex/lit-loop/dist/guards.d.ts +73 -0
- package/node_modules/@litcodex/lit-loop/dist/guards.js +215 -0
- package/node_modules/@litcodex/lit-loop/dist/handoff-route.d.ts +5 -0
- package/node_modules/@litcodex/lit-loop/dist/handoff-route.js +11 -0
- package/node_modules/@litcodex/lit-loop/dist/hook-cli.d.ts +19 -0
- package/node_modules/@litcodex/lit-loop/dist/hook-cli.js +189 -0
- package/node_modules/@litcodex/lit-loop/dist/lit-mark.d.ts +20 -0
- package/node_modules/@litcodex/lit-loop/dist/lit-mark.js +138 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-cli.d.ts +19 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-cli.js +109 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-doctor-render.d.ts +7 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-doctor-render.js +39 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-doctor-types.d.ts +52 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-doctor-types.js +7 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-doctor.d.ts +34 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-doctor.js +336 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-errors.d.ts +15 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-errors.js +45 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-handlers.d.ts +18 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-handlers.js +367 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-model.d.ts +51 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-model.js +166 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-stdout.d.ts +6 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-stdout.js +11 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-types.d.ts +26 -0
- package/node_modules/@litcodex/lit-loop/dist/loop-types.js +8 -0
- package/node_modules/@litcodex/lit-loop/dist/markers.d.ts +33 -0
- package/node_modules/@litcodex/lit-loop/dist/markers.js +38 -0
- package/node_modules/@litcodex/lit-loop/dist/modes.d.ts +29 -0
- package/node_modules/@litcodex/lit-loop/dist/modes.js +176 -0
- package/node_modules/@litcodex/lit-loop/dist/plan-persistence.d.ts +20 -0
- package/node_modules/@litcodex/lit-loop/dist/plan-persistence.js +147 -0
- package/node_modules/@litcodex/lit-loop/dist/redaction.d.ts +3 -0
- package/node_modules/@litcodex/lit-loop/dist/redaction.js +177 -0
- package/node_modules/@litcodex/lit-loop/dist/scientific-visualization-route.d.ts +7 -0
- package/node_modules/@litcodex/lit-loop/dist/scientific-visualization-route.js +15 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/apply.d.ts +16 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/apply.js +227 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/config.d.ts +13 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/config.js +12 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/curator.d.ts +14 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/curator.js +112 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/hook.d.ts +19 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/hook.js +435 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/ownership.d.ts +6 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/ownership.js +145 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/paths.d.ts +18 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/paths.js +43 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/review.d.ts +28 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/review.js +702 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/store.d.ts +32 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/store.js +667 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/transaction.d.ts +26 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/transaction.js +524 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/types.d.ts +81 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/types.js +246 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/usage.d.ts +6 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop/usage.js +119 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop-cli.d.ts +8 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-loop-cli.js +111 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-mention-scope.d.ts +4 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-mention-scope.js +69 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-observer-cli.d.ts +3 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-observer-cli.js +116 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-observer-route.d.ts +6 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-observer-route.js +12 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-observer.d.ts +18 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-observer.js +946 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-renames.d.ts +20 -0
- package/node_modules/@litcodex/lit-loop/dist/skill-renames.js +43 -0
- package/node_modules/@litcodex/lit-loop/dist/state-paths.d.ts +43 -0
- package/node_modules/@litcodex/lit-loop/dist/state-paths.js +121 -0
- package/node_modules/@litcodex/lit-loop/dist/state-store.d.ts +40 -0
- package/node_modules/@litcodex/lit-loop/dist/state-store.js +471 -0
- package/node_modules/@litcodex/lit-loop/dist/state-types.d.ts +121 -0
- package/node_modules/@litcodex/lit-loop/dist/state-types.js +67 -0
- package/node_modules/@litcodex/lit-loop/dist/trigger.d.ts +62 -0
- package/node_modules/@litcodex/lit-loop/dist/trigger.js +277 -0
- package/node_modules/@litcodex/lit-loop/package.json +33 -0
- package/node_modules/@litcodex/lit-loop/skills/browser-drive/SKILL.md +206 -0
- package/node_modules/@litcodex/lit-loop/skills/browser-drive/agents/openai.yaml +6 -0
- package/node_modules/@litcodex/lit-loop/skills/browser-drive/references/snapshot-act-loop.md +48 -0
- package/node_modules/@litcodex/lit-loop/skills/browser-drive/scripts/capability-probe.mjs +437 -0
- package/node_modules/@litcodex/lit-loop/skills/deep-interview/SKILL.md +339 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-burnoff/SKILL.md +489 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-burnoff/references/behavior-preserving-cleanup.md +105 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-burnoff-file/SKILL.md +169 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/SKILL.md +628 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/engineering-risk-signals.md +123 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/README.md +90 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/backend-stack.md +641 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/bootstrap.md +328 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/bubbletea-v2.md +360 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/cobra-stack.md +468 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/concurrency.md +362 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/data-modeling.md +329 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/error-handling.md +359 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/golangci-strict.md +236 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/grpc-connect.md +375 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/libraries.md +337 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/one-liners.md +202 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/sqlc-pgx.md +471 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/testing.md +467 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/go/type-patterns.md +298 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/observability-contracts.md +124 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/README.md +314 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/async-anyio.md +442 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/data-modeling.md +233 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/data-processing.md +133 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/error-handling.md +218 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/fastapi-stack.md +316 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/httpx2-optimization.md +360 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/libraries.md +307 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/one-liners.md +268 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/orjson-stack.md +378 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/pydantic-ai.md +285 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/pyproject-strict.md +232 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/textual-tui.md +201 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/python/type-patterns.md +176 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/README.md +317 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/async-tokio.md +299 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/axum-stack.md +467 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/cargo-strict.md +317 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/clap-stack.md +409 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/concurrency.md +375 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/libraries.md +439 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/one-liners.md +291 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/proptest-insta.md +429 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/type-state.md +354 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/unsafe-discipline.md +250 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust/zero-cost-safety.md +527 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust-ub/README.md +289 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust-ub/miri-sanitizers-loom.md +411 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/rust-ub/ub-taxonomy.md +269 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/README.md +195 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/backend-hono.md +672 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/bootstrap.md +199 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/data-modeling.md +202 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/error-handling.md +169 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/tsconfig-strict.md +152 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/references/typescript/type-patterns.md +196 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/check-no-excuse-rules.sh +173 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/new-project.py +138 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/.editorconfig +13 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/.golangci.yml +95 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/AGENTS.md.tmpl +24 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/README.md.tmpl +12 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/Taskfile.yml +40 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/ci.yml +37 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/config.go +24 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/gitignore +15 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/main.go.tmpl +22 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/go/templates/run.go +15 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/python/check-no-excuse-rules.py +687 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/python/new-project.py +172 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/python/new-script.py +116 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/rust/check-no-excuse-rules.py +296 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/rust/check-no-excuse-rules.sh +158 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/rust/new-project.py +175 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/typescript/check-no-excuse-rules.ts +344 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-code/scripts/typescript/new-project.ts +174 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-commit/SKILL.md +254 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-commit/agents/openai.yaml +13 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-commit/references/safe-git-operations.md +123 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-comprehend/SKILL.md +472 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-crucible/SKILL.md +321 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-crucible/agents/openai.yaml +6 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-crucible/references/adversarial-workflow.md +142 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/SKILL.md +326 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/references/ab-eval.md +36 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/references/discovery-evidence.md +200 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/references/workflow.md +137 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/fetch.mjs +122 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/reader.mjs +115 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/redaction.mjs +53 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/report.mjs +190 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/routes.mjs +56 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/safety.mjs +165 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/lib/validate.mjs +189 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-fetch/scripts/read-public-page.mjs +61 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-handoff/SKILL.md +231 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-init/SKILL.md +474 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-init/agents/openai.yaml +6 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-init/references/deep-repository-map.md +116 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-korean/SKILL.md +206 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-korean/references/prompt-injection-handling.md +23 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-korean/references/quick-rules.md +38 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-korean/references/safety-checklist.md +38 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-loop/SKILL.md +202 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-plan/SKILL.md +384 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-recap/SKILL.md +222 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-scientific-visualization/SKILL.md +255 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-scientific-visualization/scripts/dependency-preflight.py +233 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-team/SKILL.md +190 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-team/references/team-orchestration.md +147 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/owner-lock.mjs +82 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/team-guide.mjs +31 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/team-state.mjs +262 -0
- package/node_modules/@litcodex/lit-loop/skills/lit-team/scripts/team.mjs +145 -0
- package/node_modules/@litcodex/lit-loop/skills/litgoal/SKILL.md +209 -0
- package/node_modules/@litcodex/lit-loop/skills/litresearch/SKILL.md +572 -0
- package/node_modules/@litcodex/lit-loop/skills/litwork/SKILL.md +238 -0
- package/node_modules/@litcodex/lit-loop/skills/review-work/SKILL.md +867 -0
- package/node_modules/@litcodex/lit-loop/skills/skill-observer/SKILL.md +215 -0
- package/node_modules/@litcodex/lit-loop/skills/skill-observer/references/review-contract.md +77 -0
- package/node_modules/@litcodex/lit-loop/skills/start-work/SKILL.md +503 -0
- package/node_modules/@litcodex/lit-loop/vendor/NOTICE +19 -0
- package/node_modules/@litcodex/lit-loop/vendor/handoff/SKILL.md +199 -0
- package/node_modules/@litcodex/lit-loop/vendor/handoff/evals/evals.json +154 -0
- package/node_modules/@litcodex/lit-loop/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/node_modules/@litcodex/lit-loop/vendor/handoff/templates/HANDOFF.md +121 -0
- package/node_modules/@litcodex/lit-loop/vendor/licenses/022_handoff-MIT.txt +21 -0
- package/node_modules/@litcodex/lit-loop/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/node_modules/@litcodex/lit-loop/vendor/provenance/022_handoff.md +25 -0
- package/node_modules/@litcodex/lit-loop/vendor/provenance/045_scientific-visualization.md +42 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/SKILL.md +283 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/color_palettes.py +197 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/evals/evals.json +158 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/color_palettes.md +380 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/journal_requirements.md +359 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/scripts/figure_export.py +238 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/scripts/style_presets.py +467 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
- package/node_modules/@litcodex/lit-loop/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
- package/package.json +64 -0
- package/readme-assets/ascii-readme.svg +5 -0
- package/readme-assets/badge-license.svg +1 -0
- package/readme-assets/badge-version.svg +1 -0
- package/readme-assets/clay-icon.png +0 -0
- package/readme-assets/cover.webp +0 -0
- package/readme-assets/ignition-poster.png +0 -0
- package/readme-assets/litcodex-continuity-1600.webp +0 -0
- package/readme-assets/litcodex-ignition-1600.webp +0 -0
- package/readme-assets/litcodex-wordmark.svg +5 -0
- package/readme-assets/lucide-book-open.svg +14 -0
- package/readme-assets/lucide-play.svg +13 -0
- package/readme-assets/lucide-shield-check.svg +14 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# Concurrency
|
|
2
|
+
|
|
3
|
+
Goroutines, context, errgroup, channels, locks, and the discipline that keeps them from leaking. Go makes concurrency *easy to start* and *easy to get wrong*. This document is the boring rule set.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## The four non-negotiables
|
|
8
|
+
|
|
9
|
+
1. **`ctx context.Context` is the first parameter of every public function that does I/O or can be cancelled.**
|
|
10
|
+
2. **No goroutine without a shutdown path.** Every `go` keyword must answer "how does this stop?".
|
|
11
|
+
3. **`-race` on every test run.** The `Taskfile.yml` and CI both enforce it.
|
|
12
|
+
4. **`goleak` in `TestMain`** for every package that spawns goroutines. Catches leaks the race detector cannot.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## `context.Context` — the cancellation backbone
|
|
17
|
+
|
|
18
|
+
```go
|
|
19
|
+
// GOOD — ctx as first param, propagated through
|
|
20
|
+
func (s *UserService) Create(ctx context.Context, email Email) (User, error) {
|
|
21
|
+
user, err := s.store.Insert(ctx, email)
|
|
22
|
+
if err != nil {
|
|
23
|
+
return User{}, fmt.Errorf("insert: %w", err)
|
|
24
|
+
}
|
|
25
|
+
if err := s.notifier.Welcome(ctx, user); err != nil {
|
|
26
|
+
return User{}, fmt.Errorf("notify: %w", err)
|
|
27
|
+
}
|
|
28
|
+
return user, nil
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// BAD — creates a fresh ctx, breaks request cancellation
|
|
32
|
+
func (s *UserService) Create(email Email) (User, error) {
|
|
33
|
+
ctx := context.Background() // ← contextcheck linter rejects this
|
|
34
|
+
// ...
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The `contextcheck` linter (enabled in `golangci-strict.md`) refuses any function that has `ctx context.Context` available but uses `context.Background()` instead.
|
|
39
|
+
|
|
40
|
+
### `context.Value` — use sparingly
|
|
41
|
+
|
|
42
|
+
```go
|
|
43
|
+
// Typed key — never use a bare string
|
|
44
|
+
type ctxKey struct{ name string }
|
|
45
|
+
var requestIDKey = ctxKey{"request_id"}
|
|
46
|
+
|
|
47
|
+
func WithRequestID(ctx context.Context, id string) context.Context {
|
|
48
|
+
return context.WithValue(ctx, requestIDKey, id)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
func RequestID(ctx context.Context) string {
|
|
52
|
+
v, _ := ctx.Value(requestIDKey).(string)
|
|
53
|
+
return v
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Rules**:
|
|
58
|
+
- Keys are unexported struct types, not strings. Prevents collisions across packages.
|
|
59
|
+
- `context.Value` is for *request-scoped metadata* (request ID, auth subject, trace span), NEVER for application-scoped dependencies.
|
|
60
|
+
- Dependencies (loggers, DB pools, config) go in your service struct, not in `context.Value`.
|
|
61
|
+
|
|
62
|
+
### `WithTimeout` / `WithCancel` — always pair with `defer cancel()`
|
|
63
|
+
|
|
64
|
+
```go
|
|
65
|
+
ctx, cancel := context.WithTimeout(ctx, 5*time.Second)
|
|
66
|
+
defer cancel() // ← MUST be deferred. fatcontext linter catches misses.
|
|
67
|
+
|
|
68
|
+
if err := slow(ctx); err != nil { ... }
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Forgetting `defer cancel()` leaks a context goroutine until the parent expires — the `lostcancel` vet check catches it.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## `errgroup` — the structured concurrency primitive
|
|
76
|
+
|
|
77
|
+
`golang.org/x/sync/errgroup` is Go's answer to Python's `asyncio.TaskGroup` or Rust's `JoinSet`. Use it instead of raw `go` for any group of related goroutines.
|
|
78
|
+
|
|
79
|
+
```go
|
|
80
|
+
import "golang.org/x/sync/errgroup"
|
|
81
|
+
|
|
82
|
+
func FetchAll(ctx context.Context, urls []string) ([][]byte, error) {
|
|
83
|
+
g, ctx := errgroup.WithContext(ctx)
|
|
84
|
+
g.SetLimit(8) // concurrency cap — leave unbounded = production outage
|
|
85
|
+
|
|
86
|
+
results := make([][]byte, len(urls))
|
|
87
|
+
for i, u := range urls {
|
|
88
|
+
g.Go(func() error {
|
|
89
|
+
body, err := fetch(ctx, u)
|
|
90
|
+
if err != nil {
|
|
91
|
+
return fmt.Errorf("fetch %s: %w", u, err)
|
|
92
|
+
}
|
|
93
|
+
results[i] = body
|
|
94
|
+
return nil
|
|
95
|
+
})
|
|
96
|
+
}
|
|
97
|
+
if err := g.Wait(); err != nil {
|
|
98
|
+
return nil, err
|
|
99
|
+
}
|
|
100
|
+
return results, nil
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Properties:
|
|
105
|
+
|
|
106
|
+
- `WithContext(parent)` returns a child ctx that gets cancelled on **first non-nil error**. All in-flight goroutines see `ctx.Done()` and bail.
|
|
107
|
+
- `SetLimit(n)` blocks `g.Go(...)` when the in-flight count hits `n`. **Always set this.** Unbounded fan-out is how services die.
|
|
108
|
+
- `g.Wait()` returns the **first** non-nil error. Others are dropped. If you need all errors, accumulate them manually:
|
|
109
|
+
```go
|
|
110
|
+
var mu sync.Mutex
|
|
111
|
+
var errs []error
|
|
112
|
+
// inside g.Go:
|
|
113
|
+
// mu.Lock(); errs = append(errs, err); mu.Unlock()
|
|
114
|
+
// after Wait, errors.Join(errs...)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Goroutine leaks — `goleak`
|
|
120
|
+
|
|
121
|
+
```go
|
|
122
|
+
package store_test
|
|
123
|
+
|
|
124
|
+
import (
|
|
125
|
+
"testing"
|
|
126
|
+
"go.uber.org/goleak"
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
func TestMain(m *testing.M) {
|
|
130
|
+
goleak.VerifyTestMain(m)
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
This single line at the top of `*_test.go` runs goleak's check after every test in the package. If a test leaks a goroutine, the run fails — pointing at which goroutine.
|
|
135
|
+
|
|
136
|
+
**The bug it catches**: starting a goroutine in `setUp` and never joining it. Common in DB connection pools, background workers, ticker loops. The race detector does NOT catch this.
|
|
137
|
+
|
|
138
|
+
If you have a known long-lived goroutine (a singleton background worker, a metrics exporter), use `goleak.IgnoreTopFunction`:
|
|
139
|
+
|
|
140
|
+
```go
|
|
141
|
+
goleak.VerifyTestMain(m,
|
|
142
|
+
goleak.IgnoreTopFunction("github.com/example/metrics.(*Registry).Push"),
|
|
143
|
+
)
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Channels — the rules that hold
|
|
149
|
+
|
|
150
|
+
### Direction
|
|
151
|
+
|
|
152
|
+
```go
|
|
153
|
+
// GOOD — direction in signatures
|
|
154
|
+
func produce(out chan<- Item)
|
|
155
|
+
func consume(in <-chan Item)
|
|
156
|
+
func pipeline(in <-chan Item, out chan<- Item)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Direction restricts misuse. A consumer cannot close the producer's channel.
|
|
160
|
+
|
|
161
|
+
### Closing
|
|
162
|
+
|
|
163
|
+
- **The sender closes.** Always. Never the receiver, never multiple senders.
|
|
164
|
+
- **Multiple senders → use a `sync.WaitGroup` + one closer.**
|
|
165
|
+
- **Closing a closed channel panics.** Closing a `nil` channel panics. Sending on a closed channel panics. Receiving from a closed channel returns zero value with `ok = false`.
|
|
166
|
+
|
|
167
|
+
```go
|
|
168
|
+
// Canonical fan-in: multiple producers, one closer
|
|
169
|
+
func fanIn(ctx context.Context, sources ...<-chan Item) <-chan Item {
|
|
170
|
+
out := make(chan Item)
|
|
171
|
+
var wg sync.WaitGroup
|
|
172
|
+
wg.Add(len(sources))
|
|
173
|
+
for _, src := range sources {
|
|
174
|
+
go func() {
|
|
175
|
+
defer wg.Done()
|
|
176
|
+
for item := range src {
|
|
177
|
+
select {
|
|
178
|
+
case out <- item:
|
|
179
|
+
case <-ctx.Done():
|
|
180
|
+
return
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}()
|
|
184
|
+
}
|
|
185
|
+
go func() { wg.Wait(); close(out) }()
|
|
186
|
+
return out
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Selecting
|
|
191
|
+
|
|
192
|
+
```go
|
|
193
|
+
select {
|
|
194
|
+
case msg := <-incoming:
|
|
195
|
+
handle(msg)
|
|
196
|
+
case <-ctx.Done():
|
|
197
|
+
return ctx.Err()
|
|
198
|
+
case <-time.After(5 * time.Second):
|
|
199
|
+
return ErrTimeout
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
- `time.After` allocates a timer each call — fine for occasional selects, **NOT for hot loops**. Use `time.NewTimer` + `timer.Reset` for repeat selects.
|
|
204
|
+
- A `default:` case makes `select` non-blocking. Use deliberately, not by accident.
|
|
205
|
+
|
|
206
|
+
### Buffered vs unbuffered
|
|
207
|
+
|
|
208
|
+
- **Unbuffered** (`make(chan T)`) = synchronous handoff. Sender blocks until receiver is ready. Use for *coordination*.
|
|
209
|
+
- **Buffered** (`make(chan T, n)`) = asynchronous up to `n`. Use for *decoupling producer rate from consumer rate*.
|
|
210
|
+
|
|
211
|
+
A buffered channel of size 1 acts as a **non-blocking signal**:
|
|
212
|
+
|
|
213
|
+
```go
|
|
214
|
+
ready := make(chan struct{}, 1)
|
|
215
|
+
// Producer
|
|
216
|
+
select {
|
|
217
|
+
case ready <- struct{}{}: // signal once, non-blocking
|
|
218
|
+
default: // already signaled, skip
|
|
219
|
+
}
|
|
220
|
+
// Consumer
|
|
221
|
+
<-ready
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Locks — the pyramid
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
Highest level (preferred)
|
|
230
|
+
channels (message passing — "share memory by communicating")
|
|
231
|
+
errgroup / wait group
|
|
232
|
+
|
|
233
|
+
sync.RWMutex (many readers, occasional writer)
|
|
234
|
+
sync.Mutex (mutual exclusion)
|
|
235
|
+
|
|
236
|
+
atomic.Int64 / atomic.Pointer (single-word lock-free)
|
|
237
|
+
|
|
238
|
+
Lowest level (rare)
|
|
239
|
+
unsafe.Pointer + barriers (custom lock-free; needs -race AND review)
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### `sync.Mutex` — embed, don't expose
|
|
243
|
+
|
|
244
|
+
```go
|
|
245
|
+
type Cache struct {
|
|
246
|
+
mu sync.RWMutex
|
|
247
|
+
items map[string]Entry
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
func (c *Cache) Get(key string) (Entry, bool) {
|
|
251
|
+
c.mu.RLock()
|
|
252
|
+
defer c.mu.RUnlock()
|
|
253
|
+
e, ok := c.items[key]
|
|
254
|
+
return e, ok
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
func (c *Cache) Set(key string, e Entry) {
|
|
258
|
+
c.mu.Lock()
|
|
259
|
+
defer c.mu.Unlock()
|
|
260
|
+
c.items[key] = e
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
- `sync.Mutex` is **not** copyable. The `copylocks` vet check catches `var c2 = c1` where `c1` has a mutex.
|
|
265
|
+
- Always `defer mu.Unlock()` immediately after `Lock()`. Forgetting is the #1 deadlock cause.
|
|
266
|
+
- Never call user code (callbacks, listener notifications) while holding the lock. Drop the lock, snapshot the data, release, then call out.
|
|
267
|
+
|
|
268
|
+
### `sync.OnceValue` / `sync.OnceFunc` (Go 1.21+)
|
|
269
|
+
|
|
270
|
+
Replacement for `sync.Once` for typed lazy init:
|
|
271
|
+
|
|
272
|
+
```go
|
|
273
|
+
var loadConfig = sync.OnceValue(func() Config {
|
|
274
|
+
var cfg Config
|
|
275
|
+
if err := env.Parse(&cfg); err != nil { panic(err) }
|
|
276
|
+
return cfg
|
|
277
|
+
})
|
|
278
|
+
|
|
279
|
+
func handler() { cfg := loadConfig(); ... }
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Type-safe, no `sync.Once` + global variable boilerplate.
|
|
283
|
+
|
|
284
|
+
### Atomics — the typed API only
|
|
285
|
+
|
|
286
|
+
```go
|
|
287
|
+
// Go 1.19+ — use the typed atomic.* family
|
|
288
|
+
var counter atomic.Int64
|
|
289
|
+
counter.Add(1)
|
|
290
|
+
n := counter.Load()
|
|
291
|
+
|
|
292
|
+
// NEVER — the old function-style is type-unsafe
|
|
293
|
+
atomic.AddInt64(&counter, 1) // ← rejected
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## Time — inject a clock for testability
|
|
299
|
+
|
|
300
|
+
```go
|
|
301
|
+
type Clock interface {
|
|
302
|
+
Now() time.Time
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
type realClock struct{}
|
|
306
|
+
func (realClock) Now() time.Time { return time.Now() }
|
|
307
|
+
|
|
308
|
+
type Service struct {
|
|
309
|
+
clock Clock
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// Tests
|
|
313
|
+
import "github.com/benbjohnson/clock"
|
|
314
|
+
fake := clock.NewMock()
|
|
315
|
+
fake.Set(time.Date(2026, 1, 1, 0, 0, 0, 0, time.UTC))
|
|
316
|
+
svc := &Service{clock: fake}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Never call `time.Now()` in domain or service code.** The `time` package becomes a hidden dependency — tests become flaky, retries become time-of-day-dependent, expirations cannot be tested.
|
|
320
|
+
|
|
321
|
+
`time.Sleep` in production code is a code smell. Use:
|
|
322
|
+
- `time.NewTicker` for periodic work (and a `<-ctx.Done()` exit).
|
|
323
|
+
- `time.NewTimer` for one-shot delays.
|
|
324
|
+
- `time.After` ONLY in select statements, ONLY in non-hot paths.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Race detector — non-negotiable in CI
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
go test -race -shuffle=on -count=1 ./...
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
- `-race` instruments memory accesses; catches data races at runtime. ~10x slow-down — acceptable for tests, not production.
|
|
335
|
+
- `-shuffle=on` randomizes test order; catches hidden ordering dependencies.
|
|
336
|
+
- `-count=1` defeats the test cache. Without it, "passing" might mean "ran 3 weeks ago".
|
|
337
|
+
|
|
338
|
+
If a test ONLY fails under `-race`, the bug is real. Don't disable the test; fix the race.
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## Common antipatterns
|
|
343
|
+
|
|
344
|
+
| Bad | Why | Good |
|
|
345
|
+
|---|---|---|
|
|
346
|
+
| `go func() { ... }()` with no `ctx` plumbing | Leaks on shutdown | `errgroup.WithContext` or pass ctx |
|
|
347
|
+
| Bare `time.Sleep(d)` in production | Untestable, blocks | `time.NewTimer` + select with `ctx.Done()` |
|
|
348
|
+
| Channel of `interface{}` | Loses type | Typed channel; use sealed interface if variants needed |
|
|
349
|
+
| `sync.Mutex` in a struct passed by value | Locked copies, undefined behavior | Embed in pointer-receiver type; copylocks catches it |
|
|
350
|
+
| Locking around an entire request handler | Serializes the whole API | Lock only the smallest critical section |
|
|
351
|
+
| `for { select { ... } }` without `<-ctx.Done()` | Cannot stop | Add ctx case in every long-lived select |
|
|
352
|
+
| `sync.WaitGroup.Add(1)` inside the goroutine | Race: Wait can return before Add | Add **before** `go` |
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## Sources
|
|
357
|
+
|
|
358
|
+
- Go memory model: https://go.dev/ref/mem
|
|
359
|
+
- `errgroup` package: https://pkg.go.dev/golang.org/x/sync/errgroup
|
|
360
|
+
- `goleak`: https://github.com/uber-go/goleak
|
|
361
|
+
- "Go concurrency patterns" (Pike): https://go.dev/blog/pipelines
|
|
362
|
+
- Sync.OnceValue blog: https://go.dev/blog/synctest (1.24+ note: `testing/synctest` for time-controlled tests is now experimental)
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# Data Modeling — Three Layers of Validation
|
|
2
|
+
|
|
3
|
+
Go has no Pydantic. Go has no Zod. **You do not need them**, but only if you wire three layers correctly. This document is the canonical pattern.
|
|
4
|
+
|
|
5
|
+
## The three layers
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
9
|
+
│ HTTP / RPC / CLI │
|
|
10
|
+
│ Raw bytes, strings, untrusted input │
|
|
11
|
+
│ │
|
|
12
|
+
│ Layer 1: validator/v10 (struct tags) ◄── parse-once │
|
|
13
|
+
│ OR protovalidate (proto) │
|
|
14
|
+
│ │
|
|
15
|
+
└──────────────────────────┬──────────────────────────────────┘
|
|
16
|
+
│ raw req → domain.X
|
|
17
|
+
▼
|
|
18
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
19
|
+
│ Domain (internal/domain) │
|
|
20
|
+
│ │
|
|
21
|
+
│ Layer 2: Smart constructors + unexported fields │
|
|
22
|
+
│ NewEmail(s) → (Email, error) │
|
|
23
|
+
│ NewUserID(s) → (UserID, error) │
|
|
24
|
+
│ │
|
|
25
|
+
│ Once inside this layer, NO further validation. │
|
|
26
|
+
│ The types prove correctness. │
|
|
27
|
+
└──────────────────────────┬──────────────────────────────────┘
|
|
28
|
+
│ domain.X (proven valid)
|
|
29
|
+
▼
|
|
30
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
31
|
+
│ Storage (internal/store) │
|
|
32
|
+
│ │
|
|
33
|
+
│ Layer 3: sqlc-generated row structs ↔ domain types │
|
|
34
|
+
│ Hand-written mappers, NOT struct tags │
|
|
35
|
+
└─────────────────────────────────────────────────────────────┘
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Each layer parses once, into the next layer's types. **A function in the domain layer should never receive a raw string and validate it.** If it does, the boundary above failed.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Layer 1: HTTP boundary — `go-playground/validator/v10`
|
|
43
|
+
|
|
44
|
+
```go
|
|
45
|
+
package handlers
|
|
46
|
+
|
|
47
|
+
import (
|
|
48
|
+
"github.com/gin-gonic/gin"
|
|
49
|
+
"github.com/go-playground/validator/v10"
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
// CreateUserRequest is the wire format. Tags drive validation.
|
|
53
|
+
type CreateUserRequest struct {
|
|
54
|
+
Email string `json:"email" binding:"required,email"`
|
|
55
|
+
Username string `json:"username" binding:"required,alphanum,min=3,max=32"`
|
|
56
|
+
Age int `json:"age" binding:"required,gte=13,lte=130"`
|
|
57
|
+
Country string `json:"country" binding:"required,iso3166_1_alpha2"`
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
func (h *Handler) CreateUser(c *gin.Context) {
|
|
61
|
+
var req CreateUserRequest
|
|
62
|
+
if err := c.ShouldBindJSON(&req); err != nil {
|
|
63
|
+
// validator returns ValidationErrors with field-by-field detail
|
|
64
|
+
var vErr validator.ValidationErrors
|
|
65
|
+
if errors.As(err, &vErr) {
|
|
66
|
+
c.JSON(400, gin.H{"errors": fieldErrors(vErr)})
|
|
67
|
+
return
|
|
68
|
+
}
|
|
69
|
+
c.JSON(400, gin.H{"error": "invalid json"})
|
|
70
|
+
return
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Cross into domain — single point of failure
|
|
74
|
+
email, err := domain.NewEmail(req.Email)
|
|
75
|
+
if err != nil {
|
|
76
|
+
c.JSON(400, gin.H{"error": err.Error()})
|
|
77
|
+
return
|
|
78
|
+
}
|
|
79
|
+
username, err := domain.NewUsername(req.Username)
|
|
80
|
+
if err != nil {
|
|
81
|
+
c.JSON(400, gin.H{"error": err.Error()})
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
user, err := h.svc.Create(c.Request.Context(), email, username, req.Age)
|
|
86
|
+
if err != nil {
|
|
87
|
+
h.writeServiceError(c, err)
|
|
88
|
+
return
|
|
89
|
+
}
|
|
90
|
+
c.JSON(201, user)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
func fieldErrors(vErr validator.ValidationErrors) map[string]string {
|
|
94
|
+
out := make(map[string]string, len(vErr))
|
|
95
|
+
for _, fe := range vErr {
|
|
96
|
+
out[fe.Field()] = fe.Tag() + "(" + fe.Param() + ")"
|
|
97
|
+
}
|
|
98
|
+
return out
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Tag reference — the tags you actually use**:
|
|
103
|
+
|
|
104
|
+
| Tag | Meaning |
|
|
105
|
+
|---|---|
|
|
106
|
+
| `required` | Non-zero value |
|
|
107
|
+
| `omitempty` (json) | Skip if zero |
|
|
108
|
+
| `min=N` / `max=N` | Length (strings/slices) or value (numbers) |
|
|
109
|
+
| `gte=N` / `lte=N` / `gt=N` / `lt=N` | Numeric comparison |
|
|
110
|
+
| `email` | RFC 5322-ish email |
|
|
111
|
+
| `url` | Valid URL |
|
|
112
|
+
| `uuid` / `uuid4` / `uuid7` | UUID format |
|
|
113
|
+
| `alphanum` / `alpha` / `numeric` | Character class |
|
|
114
|
+
| `iso3166_1_alpha2` | Country code (US, KR, JP) |
|
|
115
|
+
| `iso4217` | Currency code (USD, KRW) |
|
|
116
|
+
| `oneof=a b c` | Enum of literal values |
|
|
117
|
+
| `dive` | Apply rules to each element of slice/map |
|
|
118
|
+
| `eqfield=Field` | Cross-field equality (e.g., password confirm) |
|
|
119
|
+
|
|
120
|
+
### Custom validators — register at startup
|
|
121
|
+
|
|
122
|
+
```go
|
|
123
|
+
func init() {
|
|
124
|
+
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
|
|
125
|
+
_ = v.RegisterValidation("strongpassword", validateStrongPassword)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
func validateStrongPassword(fl validator.FieldLevel) bool {
|
|
130
|
+
s := fl.Field().String()
|
|
131
|
+
return len(s) >= 12 && hasUpper(s) && hasDigit(s) && hasSymbol(s)
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Use sparingly. Most domain rules belong in smart constructors, not validators.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Layer 2: Domain — smart constructors
|
|
140
|
+
|
|
141
|
+
Covered in detail in `type-patterns.md`. Recap:
|
|
142
|
+
|
|
143
|
+
```go
|
|
144
|
+
package domain
|
|
145
|
+
|
|
146
|
+
type Username struct{ raw string }
|
|
147
|
+
|
|
148
|
+
func NewUsername(s string) (Username, error) {
|
|
149
|
+
s = strings.TrimSpace(s)
|
|
150
|
+
if len(s) < 3 || len(s) > 32 {
|
|
151
|
+
return Username{}, ErrInvalidUsername
|
|
152
|
+
}
|
|
153
|
+
if !isAlphanum(s) {
|
|
154
|
+
return Username{}, ErrInvalidUsername
|
|
155
|
+
}
|
|
156
|
+
return Username{raw: s}, nil
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
func (u Username) String() string { return u.raw }
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Rule**: every domain type that has invariants has:
|
|
163
|
+
|
|
164
|
+
1. An unexported field holding the raw form.
|
|
165
|
+
2. A `New<Type>(raw) (<Type>, error)` constructor as the sole entry point.
|
|
166
|
+
3. A `String() string` for printing.
|
|
167
|
+
4. `MarshalJSON` / `UnmarshalJSON` if it crosses a JSON boundary outside HTTP handlers (e.g., logging payloads, queue messages).
|
|
168
|
+
5. Optionally: `Scan` and `Value` for `database/sql` interop (rare with sqlc).
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Layer 3: Storage — sqlc rows ↔ domain types
|
|
173
|
+
|
|
174
|
+
sqlc generates row structs from `.sql` files. **Do not put validation tags on them.** Map between sqlc rows and domain types explicitly:
|
|
175
|
+
|
|
176
|
+
```go
|
|
177
|
+
// internal/store/user_store.go
|
|
178
|
+
package store
|
|
179
|
+
|
|
180
|
+
import "myservice/internal/domain"
|
|
181
|
+
|
|
182
|
+
func (s *UserStore) Get(ctx context.Context, id domain.UserID) (domain.User, error) {
|
|
183
|
+
row, err := s.q.GetUser(ctx, string(id))
|
|
184
|
+
if err != nil {
|
|
185
|
+
return domain.User{}, err
|
|
186
|
+
}
|
|
187
|
+
return rowToUser(row)
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
func rowToUser(r sqlc.UserRow) (domain.User, error) {
|
|
191
|
+
email, err := domain.NewEmail(r.Email)
|
|
192
|
+
if err != nil {
|
|
193
|
+
// DB invariant broken — this is a programmer error, not a user error
|
|
194
|
+
return domain.User{}, fmt.Errorf("db invariant: invalid email for user %s: %w", r.ID, err)
|
|
195
|
+
}
|
|
196
|
+
username, err := domain.NewUsername(r.Username)
|
|
197
|
+
if err != nil {
|
|
198
|
+
return domain.User{}, fmt.Errorf("db invariant: invalid username: %w", err)
|
|
199
|
+
}
|
|
200
|
+
return domain.User{
|
|
201
|
+
ID: domain.UserID(r.ID),
|
|
202
|
+
Email: email,
|
|
203
|
+
Username: username,
|
|
204
|
+
Created: r.CreatedAt,
|
|
205
|
+
}, nil
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The mapping is verbose. **That is the point.** Each field is a deliberate choice; refactors flag every site.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Discriminated unions (sum types) at the boundary
|
|
214
|
+
|
|
215
|
+
When a wire payload has variants (e.g., `{"type": "user.created", ...}` vs `{"type": "user.deleted", ...}`):
|
|
216
|
+
|
|
217
|
+
```go
|
|
218
|
+
// Wire DTO with raw discriminator
|
|
219
|
+
type EventDTO struct {
|
|
220
|
+
Type string `json:"type" binding:"required,oneof=created deleted updated"`
|
|
221
|
+
Payload json.RawMessage `json:"payload" binding:"required"`
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Parse into the sealed domain type
|
|
225
|
+
func ParseEvent(dto EventDTO) (event.Event, error) {
|
|
226
|
+
switch dto.Type {
|
|
227
|
+
case "created":
|
|
228
|
+
var c event.Created
|
|
229
|
+
if err := json.Unmarshal(dto.Payload, &c); err != nil {
|
|
230
|
+
return nil, fmt.Errorf("decode created: %w", err)
|
|
231
|
+
}
|
|
232
|
+
return c, nil
|
|
233
|
+
case "deleted":
|
|
234
|
+
var d event.Deleted
|
|
235
|
+
if err := json.Unmarshal(dto.Payload, &d); err != nil {
|
|
236
|
+
return nil, fmt.Errorf("decode deleted: %w", err)
|
|
237
|
+
}
|
|
238
|
+
return d, nil
|
|
239
|
+
case "updated":
|
|
240
|
+
var u event.Updated
|
|
241
|
+
if err := json.Unmarshal(dto.Payload, &u); err != nil {
|
|
242
|
+
return nil, fmt.Errorf("decode updated: %w", err)
|
|
243
|
+
}
|
|
244
|
+
return u, nil
|
|
245
|
+
default:
|
|
246
|
+
return nil, fmt.Errorf("unknown event type %q", dto.Type)
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
The `exhaustive` linter on the switch + the `oneof` validation tag together cover both "unknown type" and "unhandled variant".
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Enums — typed string consts, not iota
|
|
256
|
+
|
|
257
|
+
```go
|
|
258
|
+
// GOOD — string-based, JSON-serializes correctly, debuggable
|
|
259
|
+
type Status string
|
|
260
|
+
|
|
261
|
+
const (
|
|
262
|
+
StatusPending Status = "pending"
|
|
263
|
+
StatusActive Status = "active"
|
|
264
|
+
StatusClosed Status = "closed"
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
func (s Status) IsValid() bool {
|
|
268
|
+
switch s {
|
|
269
|
+
case StatusPending, StatusActive, StatusClosed:
|
|
270
|
+
return true
|
|
271
|
+
}
|
|
272
|
+
return false
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
func (s *Status) UnmarshalJSON(data []byte) error {
|
|
276
|
+
var raw string
|
|
277
|
+
if err := json.Unmarshal(data, &raw); err != nil { return err }
|
|
278
|
+
parsed := Status(raw)
|
|
279
|
+
if !parsed.IsValid() { return fmt.Errorf("invalid status %q", raw) }
|
|
280
|
+
*s = parsed
|
|
281
|
+
return nil
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Never use `iota` enums for anything that crosses a wire boundary.** They serialize as integers, which (a) breaks debuggability, (b) makes reordering enum values a silent breaking change.
|
|
286
|
+
|
|
287
|
+
Use the validator tag `binding:"oneof=pending active closed"` to enforce at the HTTP boundary.
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Nullable fields — `*T` vs sentinel
|
|
292
|
+
|
|
293
|
+
Three choices, in order of preference:
|
|
294
|
+
|
|
295
|
+
1. **Sentinel zero value**: `Age int` with `0` meaning "unknown". Works when zero is genuinely unreachable as a valid value.
|
|
296
|
+
2. **`sql.Null<T>`** for DB columns: `sql.NullString`, `sql.NullInt64`, `sql.NullTime`. sqlc generates these for nullable columns.
|
|
297
|
+
3. **`*T`**: only when you need to distinguish "not provided" from "set to zero" in a JSON payload (PATCH semantics).
|
|
298
|
+
|
|
299
|
+
```go
|
|
300
|
+
// PATCH payload — `*string` discriminates absent vs empty
|
|
301
|
+
type UpdateUserRequest struct {
|
|
302
|
+
Email *string `json:"email,omitempty"`
|
|
303
|
+
Username *string `json:"username,omitempty"`
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Avoid `*T` in domain types — it bloats every consumer with nil checks. Keep `*T` at the boundary, unwrap on the way in.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Common AI-generated antipatterns this rejects
|
|
312
|
+
|
|
313
|
+
| Bad | Why | Good |
|
|
314
|
+
|---|---|---|
|
|
315
|
+
| `func handle(req map[string]any)` | No types, no validation | Define a struct, parse with `validator` |
|
|
316
|
+
| `if email != "" { ... }` inside domain | Validation in the wrong layer | Make `email Email`, no check needed |
|
|
317
|
+
| `type Status int` with `iota` for wire field | Silent breaking on reorder | `type Status string` with const literals |
|
|
318
|
+
| Struct tags `json:"email,string"` (the `,string` coercion) | Magic coercion hides bad input | Strict parsing, fail-fast |
|
|
319
|
+
| `json.Unmarshal` then range-check after | Two-step "validate after parse" | Use `validator` tags or custom `UnmarshalJSON` |
|
|
320
|
+
| Reusing handler DTO as the domain type | Couples wire format to business logic | Two distinct types, explicit mapping |
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Sources
|
|
325
|
+
|
|
326
|
+
- go-playground/validator: https://github.com/go-playground/validator
|
|
327
|
+
- gin binding internals: https://github.com/gin-gonic/gin/blob/master/binding/json.go
|
|
328
|
+
- Parse, don't validate: https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/
|
|
329
|
+
- sqlc with custom types: https://docs.sqlc.dev/en/latest/howto/overrides.html
|