@litfamily/litopencode 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/.gitattributes +8 -0
- package/ATTRIBUTION.md +56 -0
- package/CHANGELOG.md +267 -0
- package/CODE_OF_CONDUCT.md +30 -0
- package/CONTRIBUTING.md +82 -0
- package/LICENSE +21 -0
- package/README-Ko-KR.md +252 -0
- package/README.md +252 -0
- package/SECURITY.md +36 -0
- package/SUPPORT.md +37 -0
- package/bin/litopencode +3 -0
- package/bin/litopencode.cjs +10 -0
- package/dist/activation-managed-prompts.d.ts +2 -0
- package/dist/activation-managed-prompts.js +51 -0
- package/dist/activation-primary-prompts.d.ts +2 -0
- package/dist/activation-primary-prompts.js +176 -0
- package/dist/activation-probe.d.ts +3 -0
- package/dist/activation-probe.js +19 -0
- package/dist/activation-prompt-utils.d.ts +6 -0
- package/dist/activation-prompt-utils.js +36 -0
- package/dist/activation-routing.d.ts +5 -0
- package/dist/activation-routing.js +340 -0
- package/dist/activation-workflow-prompts.d.ts +26 -0
- package/dist/activation-workflow-prompts.js +295 -0
- package/dist/activation.d.ts +24 -0
- package/dist/activation.js +152 -0
- package/dist/agents/defaults.d.ts +15 -0
- package/dist/agents/defaults.js +112 -0
- package/dist/agents/registry.d.ts +65 -0
- package/dist/agents/registry.js +319 -0
- package/dist/agents/specialists.d.ts +49 -0
- package/dist/agents/specialists.js +307 -0
- package/dist/agents/types.d.ts +55 -0
- package/dist/agents/types.js +4 -0
- package/dist/agents.d.ts +4 -0
- package/dist/agents.js +3 -0
- package/dist/benchmark.d.ts +94 -0
- package/dist/benchmark.js +172 -0
- package/dist/bounded-authority-hooks.d.ts +19 -0
- package/dist/bounded-authority-hooks.js +157 -0
- package/dist/bounded-authority.d.ts +184 -0
- package/dist/bounded-authority.js +825 -0
- package/dist/cache-metrics.d.ts +54 -0
- package/dist/cache-metrics.js +81 -0
- package/dist/cli/args.d.ts +5 -0
- package/dist/cli/args.js +415 -0
- package/dist/cli/auto-update.d.ts +117 -0
- package/dist/cli/auto-update.js +604 -0
- package/dist/cli/command-alias-ownership.d.ts +2 -0
- package/dist/cli/command-alias-ownership.js +14 -0
- package/dist/cli/command-aliases.d.ts +12 -0
- package/dist/cli/command-aliases.js +112 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.js +175 -0
- package/dist/cli/host-capabilities.d.ts +12 -0
- package/dist/cli/host-capabilities.js +25 -0
- package/dist/cli/host-limits.d.ts +21 -0
- package/dist/cli/host-limits.js +83 -0
- package/dist/cli/install-config.d.ts +13 -0
- package/dist/cli/install-config.js +201 -0
- package/dist/cli/install-report.d.ts +2 -0
- package/dist/cli/install-report.js +180 -0
- package/dist/cli/install-tui.d.ts +12 -0
- package/dist/cli/install-tui.js +174 -0
- package/dist/cli/install.d.ts +2 -0
- package/dist/cli/install.js +264 -0
- package/dist/cli/json.d.ts +4 -0
- package/dist/cli/json.js +31 -0
- package/dist/cli/loop.d.ts +3 -0
- package/dist/cli/loop.js +135 -0
- package/dist/cli/lsp-capability.d.ts +17 -0
- package/dist/cli/lsp-capability.js +92 -0
- package/dist/cli/managed-skill-assets.d.ts +23 -0
- package/dist/cli/managed-skill-assets.js +117 -0
- package/dist/cli/model-catalog.d.ts +21 -0
- package/dist/cli/model-catalog.js +107 -0
- package/dist/cli/model-policy.d.ts +3 -0
- package/dist/cli/model-policy.js +143 -0
- package/dist/cli/model-routing.d.ts +5 -0
- package/dist/cli/model-routing.js +208 -0
- package/dist/cli/native-canonical-backup.d.ts +9 -0
- package/dist/cli/native-canonical-backup.js +96 -0
- package/dist/cli/native-canonical-cache.d.ts +9 -0
- package/dist/cli/native-canonical-cache.js +37 -0
- package/dist/cli/native-skill-install.d.ts +2 -0
- package/dist/cli/native-skill-install.js +128 -0
- package/dist/cli/native-skill-integrity.d.ts +25 -0
- package/dist/cli/native-skill-integrity.js +178 -0
- package/dist/cli/native-skill-tree.d.ts +12 -0
- package/dist/cli/native-skill-tree.js +104 -0
- package/dist/cli/native-skills.d.ts +22 -0
- package/dist/cli/native-skills.js +105 -0
- package/dist/cli/plugin-mutation.d.ts +4 -0
- package/dist/cli/plugin-mutation.js +89 -0
- package/dist/cli/scientific-visualization-dependencies.d.ts +18 -0
- package/dist/cli/scientific-visualization-dependencies.js +91 -0
- package/dist/cli/skill-loop.d.ts +3 -0
- package/dist/cli/skill-loop.js +649 -0
- package/dist/cli/types.d.ts +188 -0
- package/dist/cli/types.js +1 -0
- package/dist/cli/update-check.d.ts +2 -0
- package/dist/cli/update-check.js +15 -0
- package/dist/cli/update-notifier.d.ts +70 -0
- package/dist/cli/update-notifier.js +717 -0
- package/dist/cli/vendor-path-migration.d.ts +9 -0
- package/dist/cli/vendor-path-migration.js +96 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +250 -0
- package/dist/commands.d.ts +331 -0
- package/dist/commands.js +600 -0
- package/dist/config-parser.d.ts +5 -0
- package/dist/config-parser.js +274 -0
- package/dist/config.d.ts +72 -0
- package/dist/config.js +157 -0
- package/dist/deliverable-hedge-guard.d.ts +26 -0
- package/dist/deliverable-hedge-guard.js +302 -0
- package/dist/durable-plan.d.ts +23 -0
- package/dist/durable-plan.js +349 -0
- package/dist/features.d.ts +828 -0
- package/dist/features.js +1109 -0
- package/dist/hooks.d.ts +17 -0
- package/dist/hooks.js +83 -0
- package/dist/ignition.d.ts +14 -0
- package/dist/ignition.js +33 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +30 -0
- package/dist/inert-data.d.ts +2 -0
- package/dist/inert-data.js +13 -0
- package/dist/knowledge.d.ts +98 -0
- package/dist/knowledge.js +961 -0
- package/dist/ledger.d.ts +181 -0
- package/dist/ledger.js +1179 -0
- package/dist/lit-fetch-classify.d.ts +8 -0
- package/dist/lit-fetch-classify.js +107 -0
- package/dist/lit-fetch-content.d.ts +2 -0
- package/dist/lit-fetch-content.js +43 -0
- package/dist/lit-fetch-http.d.ts +10 -0
- package/dist/lit-fetch-http.js +82 -0
- package/dist/lit-fetch-result.d.ts +2 -0
- package/dist/lit-fetch-result.js +65 -0
- package/dist/lit-fetch-ssrf.d.ts +9 -0
- package/dist/lit-fetch-ssrf.js +77 -0
- package/dist/lit-fetch-url.d.ts +3 -0
- package/dist/lit-fetch-url.js +28 -0
- package/dist/lit-fetch.d.ts +69 -0
- package/dist/lit-fetch.js +84 -0
- package/dist/lit-mark.d.ts +17 -0
- package/dist/lit-mark.js +129 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.js +21 -0
- package/dist/model-route-policy.d.ts +25 -0
- package/dist/model-route-policy.js +129 -0
- package/dist/reader-facing-output.d.ts +3 -0
- package/dist/reader-facing-output.js +28 -0
- package/dist/rules/discovery.d.ts +36 -0
- package/dist/rules/discovery.js +270 -0
- package/dist/rules/engine.d.ts +43 -0
- package/dist/rules/engine.js +236 -0
- package/dist/rules/frontmatter.d.ts +16 -0
- package/dist/rules/frontmatter.js +179 -0
- package/dist/rules/glob.d.ts +12 -0
- package/dist/rules/glob.js +233 -0
- package/dist/rules/hooks.d.ts +25 -0
- package/dist/rules/hooks.js +75 -0
- package/dist/rules/output-style.d.ts +1 -0
- package/dist/rules/output-style.js +20 -0
- package/dist/scientific-visualization-banner.d.ts +1 -0
- package/dist/scientific-visualization-banner.js +2 -0
- package/dist/search-workflow-ideas.d.ts +67 -0
- package/dist/search-workflow-ideas.js +128 -0
- package/dist/secret-shapes.d.ts +9 -0
- package/dist/secret-shapes.js +63 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +129 -0
- package/dist/session-lineage.d.ts +8 -0
- package/dist/session-lineage.js +12 -0
- package/dist/skill-loop/apply.d.ts +19 -0
- package/dist/skill-loop/apply.js +483 -0
- package/dist/skill-loop/config.d.ts +50 -0
- package/dist/skill-loop/config.js +215 -0
- package/dist/skill-loop/curator.d.ts +18 -0
- package/dist/skill-loop/curator.js +232 -0
- package/dist/skill-loop/ledger.d.ts +39 -0
- package/dist/skill-loop/ledger.js +344 -0
- package/dist/skill-loop/proposals.d.ts +48 -0
- package/dist/skill-loop/proposals.js +290 -0
- package/dist/skill-loop/storage.d.ts +72 -0
- package/dist/skill-loop/storage.js +817 -0
- package/dist/skill-loop/time.d.ts +2 -0
- package/dist/skill-loop/time.js +23 -0
- package/dist/skill-loop/transaction.d.ts +62 -0
- package/dist/skill-loop/transaction.js +836 -0
- package/dist/skill-loop/usage.d.ts +31 -0
- package/dist/skill-loop/usage.js +146 -0
- package/dist/skill-observer.d.ts +22 -0
- package/dist/skill-observer.js +1154 -0
- package/dist/skill-renames.d.ts +5 -0
- package/dist/skill-renames.js +8 -0
- package/dist/skills.d.ts +307 -0
- package/dist/skills.js +450 -0
- package/dist/stable-identity.d.ts +14 -0
- package/dist/stable-identity.js +15 -0
- package/dist/state.d.ts +25 -0
- package/dist/state.js +38 -0
- package/dist/strict-json.d.ts +2 -0
- package/dist/strict-json.js +94 -0
- package/dist/tool-guards.d.ts +34 -0
- package/dist/tool-guards.js +210 -0
- package/dist/tool-kit.d.ts +32 -0
- package/dist/tool-kit.js +75 -0
- package/dist/tools.d.ts +43 -0
- package/dist/tools.js +381 -0
- package/dist/uiux-visual-catalog.d.ts +50 -0
- package/dist/uiux-visual-catalog.js +103 -0
- package/dist/user-facing-markdown.d.ts +5 -0
- package/dist/user-facing-markdown.js +93 -0
- package/dist/workflow-families.d.ts +16 -0
- package/dist/workflow-families.js +95 -0
- package/docs/assets/cover.webp +0 -0
- package/docs/assets/litopencode-continuity-1600.webp +0 -0
- package/docs/assets/litopencode-ignition-1600.webp +0 -0
- package/docs/assets/readme/badge-license.svg +1 -0
- package/docs/assets/readme/badge-version.svg +1 -0
- package/docs/assets/readme/litopencode-clay-icon.png +0 -0
- package/docs/assets/readme/litopencode-wordmark.svg +5 -0
- package/docs/lit-mark.md +46 -0
- package/docs/migration.md +162 -0
- package/docs/privacy.md +82 -0
- package/docs/reference-Ko-KR.md +309 -0
- package/docs/reference.md +444 -0
- package/output-styles/asd-ste100-ko.md +41 -0
- package/output-styles/asd-ste100.md +40 -0
- package/output-styles/eli5-ko.md +13 -0
- package/output-styles/eli5.md +11 -0
- package/package.json +57 -0
- package/qa/fixtures/litfamily-harness-speed-v1.json +38 -0
- package/qa/harness-speed-contract.mjs +209 -0
- package/qa/harness-speed-v2-contract.mjs +213 -0
- package/qa/harness-speed-verdict.mjs +105 -0
- package/skills/agent-roster/SKILL.md +262 -0
- package/skills/autoconference/LICENSE +21 -0
- package/skills/autoconference/PROVENANCE.md +20 -0
- package/skills/autoconference/SKILL.md +125 -0
- package/skills/autoconference/assets/conference_template.md +76 -0
- package/skills/autoconference/assets/report_template.md +53 -0
- package/skills/autoconference/assets/synthesis_template.md +39 -0
- package/skills/autoconference/modes/analyze.md +255 -0
- package/skills/autoconference/modes/core.md +112 -0
- package/skills/autoconference/modes/debate.md +373 -0
- package/skills/autoconference/modes/plan.md +310 -0
- package/skills/autoconference/modes/resume.md +48 -0
- package/skills/autoconference/modes/ship.md +57 -0
- package/skills/autoconference/modes/survey.md +109 -0
- package/skills/autoconference/references/agent-prompts.md +134 -0
- package/skills/autoconference/references/conference-protocol.md +102 -0
- package/skills/autoconference/references/convergence-guide.md +167 -0
- package/skills/autoconference/references/core-principles.md +83 -0
- package/skills/autoconference/references/crash-recovery.md +104 -0
- package/skills/autoconference/references/results-logging.md +198 -0
- package/skills/autoconference/references/upstream-family-contract.md +130 -0
- package/skills/autoconference/references/visualization-guide.md +105 -0
- package/skills/autoconference/scripts/check_conference.sh +371 -0
- package/skills/autoconference/scripts/init_conference.py +625 -0
- package/skills/autoconference/scripts/style_presets.py +104 -0
- package/skills/autoresearch/LICENSE +21 -0
- package/skills/autoresearch/PROVENANCE.md +20 -0
- package/skills/autoresearch/SKILL.md +131 -0
- package/skills/autoresearch/assets/report_template.md +50 -0
- package/skills/autoresearch/assets/research_template.md +38 -0
- package/skills/autoresearch/assets/results_template.tsv +1 -0
- package/skills/autoresearch/modes/core.md +216 -0
- package/skills/autoresearch/modes/debug.md +235 -0
- package/skills/autoresearch/modes/fix.md +173 -0
- package/skills/autoresearch/modes/learn.md +91 -0
- package/skills/autoresearch/modes/plan.md +291 -0
- package/skills/autoresearch/modes/predict.md +266 -0
- package/skills/autoresearch/modes/reason.md +170 -0
- package/skills/autoresearch/modes/scenario.md +164 -0
- package/skills/autoresearch/modes/security.md +282 -0
- package/skills/autoresearch/modes/ship.md +49 -0
- package/skills/autoresearch/references/core-principles.md +80 -0
- package/skills/autoresearch/references/evaluator-contract.md +126 -0
- package/skills/autoresearch/references/investigation-techniques.md +205 -0
- package/skills/autoresearch/references/owasp-checklist.md +161 -0
- package/skills/autoresearch/references/persona-templates.md +232 -0
- package/skills/autoresearch/references/results-logging.md +96 -0
- package/skills/autoresearch/references/scenario-dimensions.md +178 -0
- package/skills/autoresearch/references/stride-model.md +196 -0
- package/skills/autoresearch/references/stuck-detection.md +107 -0
- package/skills/autoresearch/references/type-checklists.md +163 -0
- package/skills/autoresearch/references/upstream-family-contract.md +125 -0
- package/skills/autoresearch/references/visualization-guide.md +95 -0
- package/skills/autoresearch/scripts/check_progress.sh +272 -0
- package/skills/autoresearch/scripts/init_research.py +330 -0
- package/skills/autoresearch/scripts/run_with_deadline.py +164 -0
- package/skills/autoresearch/scripts/style_presets.py +104 -0
- package/skills/browser-drive/SKILL.md +133 -0
- package/skills/browser-drive/references/snapshot-act-loop.md +37 -0
- package/skills/browser-drive/scripts/capability-probe.mjs +262 -0
- package/skills/comment-checker/SKILL.md +171 -0
- package/skills/debugging/SKILL.md +202 -0
- package/skills/debugging/references/README.md +15 -0
- package/skills/debugging/references/escalation.md +43 -0
- package/skills/debugging/references/runtimes/README.md +17 -0
- package/skills/debugging/references/runtimes/bundled-js-binary.md +44 -0
- package/skills/debugging/references/runtimes/go.md +37 -0
- package/skills/debugging/references/runtimes/native-binary.md +44 -0
- package/skills/debugging/references/runtimes/node.md +43 -0
- package/skills/debugging/references/runtimes/python.md +41 -0
- package/skills/debugging/references/runtimes/rust.md +37 -0
- package/skills/debugging/references/tools.md +72 -0
- package/skills/deep-interview/SKILL.md +201 -0
- package/skills/doctor-installer/SKILL.md +252 -0
- package/skills/durable-litgoal/SKILL.md +248 -0
- package/skills/frontend-ui-ux/SKILL.md +70 -0
- package/skills/frontend-ui-ux/data/LICENSE +21 -0
- package/skills/frontend-ui-ux/data/PROVENANCE.json +1088 -0
- package/skills/frontend-ui-ux/data/THIRD-PARTY-NOTICE.txt +14 -0
- package/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/ATTRIBUTION.md +217 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE +21 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/LICENSE-Apache-2.0.txt +201 -0
- package/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +867 -0
- package/skills/frontend-ui-ux/references/adaptive-layout.md +85 -0
- package/skills/frontend-ui-ux/references/brand-and-imagery.md +79 -0
- package/skills/frontend-ui-ux/references/complete-contract.md +282 -0
- package/skills/frontend-ui-ux/references/composition.md +87 -0
- package/skills/frontend-ui-ux/references/creative-directions.md +83 -0
- package/skills/frontend-ui-ux/references/design/README.md +248 -0
- package/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
- package/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
- package/skills/frontend-ui-ux/references/design/airtable.md +92 -0
- package/skills/frontend-ui-ux/references/design/apple.md +250 -0
- package/skills/frontend-ui-ux/references/design/aside.md +209 -0
- package/skills/frontend-ui-ux/references/design/binance.md +348 -0
- package/skills/frontend-ui-ux/references/design/bmw.md +183 -0
- package/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
- package/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
- package/skills/frontend-ui-ux/references/design/cal.md +262 -0
- package/skills/frontend-ui-ux/references/design/claude.md +315 -0
- package/skills/frontend-ui-ux/references/design/clay.md +307 -0
- package/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
- package/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
- package/skills/frontend-ui-ux/references/design/cohere.md +269 -0
- package/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
- package/skills/frontend-ui-ux/references/design/composio.md +310 -0
- package/skills/frontend-ui-ux/references/design/cursor.md +312 -0
- package/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
- package/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
- package/skills/frontend-ui-ux/references/design/expo.md +284 -0
- package/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
- package/skills/frontend-ui-ux/references/design/figma.md +223 -0
- package/skills/frontend-ui-ux/references/design/framer.md +249 -0
- package/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
- package/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
- package/skills/frontend-ui-ux/references/design/ibm.md +335 -0
- package/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
- package/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
- package/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
- package/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
- package/skills/frontend-ui-ux/references/design/intercom.md +149 -0
- package/skills/frontend-ui-ux/references/design/kraken.md +128 -0
- package/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
- package/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
- package/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
- package/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
- package/skills/frontend-ui-ux/references/design/lovable.md +301 -0
- package/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
- package/skills/frontend-ui-ux/references/design/meta.md +369 -0
- package/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
- package/skills/frontend-ui-ux/references/design/minimax.md +260 -0
- package/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
- package/skills/frontend-ui-ux/references/design/miro.md +111 -0
- package/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
- package/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
- package/skills/frontend-ui-ux/references/design/nike.md +366 -0
- package/skills/frontend-ui-ux/references/design/notion.md +312 -0
- package/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
- package/skills/frontend-ui-ux/references/design/ollama.md +270 -0
- package/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
- package/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
- package/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
- package/skills/frontend-ui-ux/references/design/playstation.md +367 -0
- package/skills/frontend-ui-ux/references/design/posthog.md +259 -0
- package/skills/frontend-ui-ux/references/design/raycast.md +271 -0
- package/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
- package/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
- package/skills/frontend-ui-ux/references/design/renault.md +314 -0
- package/skills/frontend-ui-ux/references/design/replicate.md +264 -0
- package/skills/frontend-ui-ux/references/design/resend.md +306 -0
- package/skills/frontend-ui-ux/references/design/revolut.md +188 -0
- package/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
- package/skills/frontend-ui-ux/references/design/sanity.md +360 -0
- package/skills/frontend-ui-ux/references/design/sentry.md +265 -0
- package/skills/frontend-ui-ux/references/design/shopify.md +353 -0
- package/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
- package/skills/frontend-ui-ux/references/design/spacex.md +197 -0
- package/skills/frontend-ui-ux/references/design/spotify.md +249 -0
- package/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
- package/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
- package/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
- package/skills/frontend-ui-ux/references/design/stripe.md +325 -0
- package/skills/frontend-ui-ux/references/design/supabase.md +258 -0
- package/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
- package/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
- package/skills/frontend-ui-ux/references/design/tesla.md +289 -0
- package/skills/frontend-ui-ux/references/design/theverge.md +342 -0
- package/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
- package/skills/frontend-ui-ux/references/design/uber.md +298 -0
- package/skills/frontend-ui-ux/references/design/vercel.md +313 -0
- package/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
- package/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
- package/skills/frontend-ui-ux/references/design/warp.md +256 -0
- package/skills/frontend-ui-ux/references/design/webflow.md +95 -0
- package/skills/frontend-ui-ux/references/design/wired.md +281 -0
- package/skills/frontend-ui-ux/references/design/wise.md +176 -0
- package/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
- package/skills/frontend-ui-ux/references/design/zapier.md +331 -0
- package/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
- package/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
- package/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
- package/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
- package/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
- package/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
- package/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
- package/skills/frontend-ui-ux/references/evidence-review.md +103 -0
- package/skills/frontend-ui-ux/references/implementation-platforms.md +94 -0
- package/skills/frontend-ui-ux/references/inclusive-interface.md +85 -0
- package/skills/frontend-ui-ux/references/interaction-motion.md +93 -0
- package/skills/frontend-ui-ux/references/operating-lanes.md +80 -0
- package/skills/frontend-ui-ux/references/perfection/README.md +160 -0
- package/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
- package/skills/frontend-ui-ux/references/performance-delivery.md +77 -0
- package/skills/frontend-ui-ux/references/product-direction.md +84 -0
- package/skills/frontend-ui-ux/references/redesign-playbook.md +88 -0
- package/skills/frontend-ui-ux/references/system-foundations.md +86 -0
- package/skills/frontend-ui-ux/references/taste-direction.md +55 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
- package/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
- package/skills/frontend-ui-ux/references/visual-language.md +84 -0
- package/skills/frontend-ui-ux/references/visual-reconstruction.md +87 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.json +570 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1beta1.json +32 -0
- package/skills/frontend-ui-ux/schemas/design-contract-v1beta2.json +34 -0
- package/skills/frontend-ui-ux/scripts/bounded-json.mjs +45 -0
- package/skills/frontend-ui-ux/scripts/canonical-json.mjs +26 -0
- package/skills/frontend-ui-ux/scripts/contract-error.mjs +15 -0
- package/skills/frontend-ui-ux/scripts/csv.mjs +64 -0
- package/skills/frontend-ui-ux/scripts/dataset.mjs +65 -0
- package/skills/frontend-ui-ux/scripts/design-contract.mjs +609 -0
- package/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +193 -0
- package/skills/frontend-ui-ux/scripts/retrieval.mjs +92 -0
- package/skills/frontend-ui-ux/scripts/stable-file-read.mjs +237 -0
- package/skills/frontend-ui-ux/scripts/stdin-json.mjs +16 -0
- package/skills/frontend-ui-ux/scripts/strict-json.mjs +102 -0
- package/skills/frontend-ui-ux/scripts/uiux.mjs +86 -0
- package/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +266 -0
- package/skills/lit-burnoff/SKILL.md +227 -0
- package/skills/lit-burnoff-file/SKILL.md +175 -0
- package/skills/lit-code/SKILL.md +266 -0
- package/skills/lit-code/references/README.md +18 -0
- package/skills/lit-code/references/go/README.md +12 -0
- package/skills/lit-code/references/go/concurrency.md +42 -0
- package/skills/lit-code/references/go/error-handling.md +47 -0
- package/skills/lit-code/references/go/testing.md +55 -0
- package/skills/lit-code/references/go/tooling.md +35 -0
- package/skills/lit-code/references/go/type-patterns.md +50 -0
- package/skills/lit-code/references/python/README.md +12 -0
- package/skills/lit-code/references/python/async.md +50 -0
- package/skills/lit-code/references/python/error-handling.md +44 -0
- package/skills/lit-code/references/python/testing.md +50 -0
- package/skills/lit-code/references/python/tooling.md +38 -0
- package/skills/lit-code/references/python/type-patterns.md +46 -0
- package/skills/lit-code/references/rust/README.md +12 -0
- package/skills/lit-code/references/rust/concurrency.md +45 -0
- package/skills/lit-code/references/rust/error-handling.md +43 -0
- package/skills/lit-code/references/rust/tooling.md +36 -0
- package/skills/lit-code/references/rust/type-patterns.md +46 -0
- package/skills/lit-code/references/rust/unsafe.md +47 -0
- package/skills/lit-code/references/typescript/README.md +11 -0
- package/skills/lit-code/references/typescript/error-handling.md +56 -0
- package/skills/lit-code/references/typescript/testing.md +42 -0
- package/skills/lit-code/references/typescript/tsconfig-strict.md +40 -0
- package/skills/lit-code/references/typescript/type-patterns.md +60 -0
- package/skills/lit-commit/SKILL.md +222 -0
- package/skills/lit-comprehend/SKILL.md +278 -0
- package/skills/lit-comprehend/assets/explainer-scaffold.html +104 -0
- package/skills/lit-comprehend/references/artifact-template.md +114 -0
- package/skills/lit-comprehend/references/micro-worlds.md +115 -0
- package/skills/lit-comprehend/scripts/verify-explainer.ts +339 -0
- package/skills/lit-crucible/SKILL.md +212 -0
- package/skills/lit-fetch/SKILL.md +242 -0
- package/skills/lit-handoff/SKILL.md +199 -0
- package/skills/lit-init/SKILL.md +214 -0
- package/skills/lit-korean/SKILL.md +231 -0
- package/skills/lit-plan/SKILL.md +351 -0
- package/skills/lit-plan/scripts/scaffold-plan.mjs +275 -0
- package/skills/lit-recap/SKILL.md +233 -0
- package/skills/lit-scientific-visualization/SKILL.md +175 -0
- package/skills/litresearch/SKILL.md +436 -0
- package/skills/litwork/SKILL.md +227 -0
- package/skills/lsp/SKILL.md +186 -0
- package/skills/lsp-setup/SKILL.md +187 -0
- package/skills/lsp-setup/references/README.md +40 -0
- package/skills/lsp-setup/references/bash.md +31 -0
- package/skills/lsp-setup/references/c-cpp.md +43 -0
- package/skills/lsp-setup/references/csharp.md +29 -0
- package/skills/lsp-setup/references/dart.md +25 -0
- package/skills/lsp-setup/references/elixir.md +30 -0
- package/skills/lsp-setup/references/go.md +33 -0
- package/skills/lsp-setup/references/haskell.md +27 -0
- package/skills/lsp-setup/references/java.md +28 -0
- package/skills/lsp-setup/references/julia.md +28 -0
- package/skills/lsp-setup/references/kotlin.md +25 -0
- package/skills/lsp-setup/references/lua.md +26 -0
- package/skills/lsp-setup/references/php.md +30 -0
- package/skills/lsp-setup/references/python.md +33 -0
- package/skills/lsp-setup/references/ruby.md +34 -0
- package/skills/lsp-setup/references/rust.md +34 -0
- package/skills/lsp-setup/references/swift.md +26 -0
- package/skills/lsp-setup/references/terraform.md +26 -0
- package/skills/lsp-setup/references/typescript.md +35 -0
- package/skills/lsp-setup/references/yaml.md +27 -0
- package/skills/lsp-setup/references/zig.md +28 -0
- package/skills/managed-skill-manifest.json +1386 -0
- package/skills/native-goal-verdict/SKILL.md +216 -0
- package/skills/refactor/SKILL.md +221 -0
- package/skills/reference-benchmark-claims/SKILL.md +204 -0
- package/skills/release-guardrails/SKILL.md +245 -0
- package/skills/review-work/SKILL.md +301 -0
- package/skills/rules/SKILL.md +196 -0
- package/skills/search-workflow-ideas/SKILL.md +223 -0
- package/skills/skill-observer/SKILL.md +148 -0
- package/skills/skill-observer/references/review-contract.md +95 -0
- package/skills/skill-rename-aliases.json +10 -0
- package/skills/start-work/SKILL.md +334 -0
- package/skills/structural-search/SKILL.md +234 -0
- package/skills/tool-guards/SKILL.md +223 -0
- package/skills/visual-qa/SKILL.md +61 -0
- package/skills/visual-qa/references/capture-playbook.md +105 -0
- package/skills/visual-qa/references/complete-contract.md +411 -0
- package/skills/visual-qa/schemas/evidence-manifest-v1alpha1.json +201 -0
- package/skills/visual-qa/schemas/evidence-manifest-v1beta1.json +141 -0
- package/skills/visual-qa/schemas/review-receipt-v1alpha1.json +113 -0
- package/skills/visual-qa/scripts/artifact.mjs +123 -0
- package/skills/visual-qa/scripts/bounded-json.mjs +47 -0
- package/skills/visual-qa/scripts/canonical-json.mjs +28 -0
- package/skills/visual-qa/scripts/capabilities.mjs +66 -0
- package/skills/visual-qa/scripts/contract-text.mjs +15 -0
- package/skills/visual-qa/scripts/design-contract.mjs +611 -0
- package/skills/visual-qa/scripts/evidence-evaluate.mjs +521 -0
- package/skills/visual-qa/scripts/evidence.mjs +271 -0
- package/skills/visual-qa/scripts/png-decode.mjs +146 -0
- package/skills/visual-qa/scripts/png.mjs +154 -0
- package/skills/visual-qa/scripts/review.mjs +188 -0
- package/skills/visual-qa/scripts/stdin-json.mjs +16 -0
- package/skills/visual-qa/scripts/strict-json.mjs +102 -0
- package/skills/visual-qa/scripts/tui.mjs +149 -0
- package/skills/visual-qa/scripts/visual-qa.mjs +90 -0
- package/skills/wikify/LICENSE +21 -0
- package/skills/wikify/PROVENANCE.md +18 -0
- package/skills/wikify/SKILL.md +176 -0
- package/skills/wikify/assets/home-template.md +44 -0
- package/skills/wikify/assets/maintenance-report-template.md +46 -0
- package/skills/wikify/assets/paper-source-note-template.md +137 -0
- package/skills/wikify/assets/source-note-template.md +45 -0
- package/skills/wikify/assets/wiki-rules-template.md +117 -0
- package/skills/wikify/modes/ingest.md +57 -0
- package/skills/wikify/modes/init.md +44 -0
- package/skills/wikify/modes/lint.md +60 -0
- package/skills/wikify/modes/query.md +38 -0
- package/skills/wikify/modes/save.md +45 -0
- package/skills/wikify/references-upstream-contract.md +758 -0
- package/skills/workflow-loop/SKILL.md +387 -0
- package/tools/check-pack-payload.mjs +410 -0
- package/tools/check-payload-substance.mjs +738 -0
- package/tools/check-version-lockstep.mjs +238 -0
- package/tools/gen-canonical-frontend-manifest.mjs +66 -0
- package/tools/gen-managed-skill-manifest.mjs +135 -0
- package/tools/harness-speed-local.mjs +261 -0
- package/tools/payload-reference-exemptions.json +49 -0
- package/tools/payload-substance-allowlist.json +46 -0
- package/tools/payload-substance-parity.json +571 -0
- package/tools/qa-real-surface-fixtures.mjs +428 -0
- package/tools/qa-real-surface-harness.mjs +173 -0
- package/tools/run-behavior-replacement-probes.mjs +296 -0
- package/tools/run-build.mjs +101 -0
- package/tools/run-harness-speed-local.mjs +52 -0
- package/tools/run-harness-speed-v2.mjs +36 -0
- package/tools/run-installed-resource-tamper-probe.mjs +62 -0
- package/tools/run-negative-gate-matrix.mjs +516 -0
- package/tools/run-rules-glob-differential.mjs +232 -0
- package/tools/run-typecheck.mjs +25 -0
- package/tools/run-uiux-visual-qa-scenarios.mjs +234 -0
- package/tools/run-wikify-surface-probe.mjs +170 -0
- package/tools/scan-legacy-tokens.mjs +431 -0
- package/tools/version-manifests.json +60 -0
- package/tsconfig.build.json +12 -0
- package/tsconfig.json +13 -0
- package/vendor/NOTICE.md +21 -0
- package/vendor/handoff/SKILL.md +199 -0
- package/vendor/handoff/evals/evals.json +154 -0
- package/vendor/handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/vendor/handoff/templates/HANDOFF.md +121 -0
- package/vendor/licenses/022_handoff-MIT.txt +21 -0
- package/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/vendor/provenance/022_handoff.md +19 -0
- package/vendor/provenance/045_scientific-visualization.md +36 -0
- package/vendor/scientific-visualization/SKILL.md +283 -0
- package/vendor/scientific-visualization/assets/color_palettes.py +197 -0
- package/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
- package/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
- package/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
- package/vendor/scientific-visualization/evals/evals.json +158 -0
- package/vendor/scientific-visualization/references/color_palettes.md +380 -0
- package/vendor/scientific-visualization/references/journal_requirements.md +359 -0
- package/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
- package/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
- package/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/vendor/scientific-visualization/scripts/figure_export.py +238 -0
- package/vendor/scientific-visualization/scripts/style_presets.py +467 -0
- package/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
- package/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { promptWithSkillBody } from "./activation-prompt-utils.js";
|
|
2
|
+
export const litLoopPromptInjection = promptWithSkillBody(`▲ LIT · lit-loop
|
|
3
|
+
<lit-loop-mode>
|
|
4
|
+
LitOpenCode is active. Treat this as the host-adapted lit-loop injection for OpenCode.
|
|
5
|
+
|
|
6
|
+
First model-emitted line of your reply MUST be exactly:
|
|
7
|
+
|
|
8
|
+
▲ LIT · lit-loop
|
|
9
|
+
|
|
10
|
+
Emit that line exactly once; the harness renders the logo separately. Then start working. You are now
|
|
11
|
+
in lit-loop: a durable, evidence-driven work loop that runs until every success criterion
|
|
12
|
+
is proven complete or you are genuinely blocked.
|
|
13
|
+
|
|
14
|
+
# Enter lit-loop
|
|
15
|
+
|
|
16
|
+
Treat the user's request as a set of goals with explicit, checkable success criteria.
|
|
17
|
+
For each goal, name the criteria up front: the exact scenario, the surface you will
|
|
18
|
+
observe, and the evidence that will prove it done. Do not start coding until the
|
|
19
|
+
criteria are written down where you can re-read them.
|
|
20
|
+
|
|
21
|
+
Minimum-first applies before implementation: skip work that need not exist, reuse
|
|
22
|
+
existing code, prefer the standard library, native platform/framework features,
|
|
23
|
+
installed dependencies, or one clear line before adding custom code.
|
|
24
|
+
|
|
25
|
+
Use the LitOpenCode surfaces that match the request: chat.message activation, command
|
|
26
|
+
activation, tools, the config hook, package imports, and OpenCode-shaped driver scripts.
|
|
27
|
+
Re-derive the next step from durable state after every checkpoint so progress is based on
|
|
28
|
+
recorded evidence, not memory.
|
|
29
|
+
|
|
30
|
+
# Durable state
|
|
31
|
+
|
|
32
|
+
Maintain LitOpenCode runtime state under .litopencode/litgoal/lit-loop in the current
|
|
33
|
+
project. Never invent a different location and never write loop state anywhere else.
|
|
34
|
+
|
|
35
|
+
- .litopencode/litgoal/lit-loop/brief.md — the human-readable brief: the goals and their
|
|
36
|
+
success criteria, in your own words.
|
|
37
|
+
- .litopencode/litgoal/lit-loop/goals.json — the machine state when the current workflow
|
|
38
|
+
provides one: each goal, its status, and the captured-evidence path per criterion.
|
|
39
|
+
- .litopencode/litgoal/lit-loop/ledger.jsonl — an append-only audit trail. Append one
|
|
40
|
+
line per meaningful step: goal started, criterion failed, evidence captured, goal
|
|
41
|
+
completed. Never rewrite or delete prior lines; the ledger is the source of truth
|
|
42
|
+
across turns.
|
|
43
|
+
- .litopencode/litgoal/lit-loop/evidence — the directory where captured proof belongs
|
|
44
|
+
when an evidence artifact is created.
|
|
45
|
+
|
|
46
|
+
If you see a context compaction or restart notice, do not re-plan from scratch and do not
|
|
47
|
+
trust your in-context summary: re-read the whole ledger and any goals file first,
|
|
48
|
+
reconstruct where you are from that durable state, and resume from the first unproven
|
|
49
|
+
criterion.
|
|
50
|
+
|
|
51
|
+
# Verify progress
|
|
52
|
+
|
|
53
|
+
Verify with real, captured evidence — never by inference.
|
|
54
|
+
|
|
55
|
+
- RED before GREEN: for every behavior change, first write or run a test that fails for
|
|
56
|
+
the right reason, then make the smallest change that turns it green.
|
|
57
|
+
- TESTS ALONE NEVER PROVE DONE: a green suite proves the suite passes, not that the
|
|
58
|
+
feature works. Pair every claim of done with one real-surface artifact — the actual
|
|
59
|
+
command output, HTTP status and body, transcript, screenshot, or log — captured from
|
|
60
|
+
the surface a user would touch.
|
|
61
|
+
- For CLI/TUI work, run the command a user would run, including --help and one realistic
|
|
62
|
+
path.
|
|
63
|
+
- For package work, verify source imports, packed artifact imports, and installed-package
|
|
64
|
+
behavior when relevant.
|
|
65
|
+
- For OpenCode plugin work, call the plugin function, config hook, chat.message hook,
|
|
66
|
+
command hook, and tools through an OpenCode-shaped driver.
|
|
67
|
+
- Treat missing, indirect, stale, or inferred evidence as incomplete.
|
|
68
|
+
|
|
69
|
+
# Checkpoint evidence
|
|
70
|
+
|
|
71
|
+
Checkpoint as you go so progress is durable and incremental — never batch it to the end.
|
|
72
|
+
|
|
73
|
+
- Save raw captured output under .litopencode/litgoal/lit-loop/evidence when the work
|
|
74
|
+
produces a file artifact, then reference that artifact from the ledger entry or final
|
|
75
|
+
report.
|
|
76
|
+
- Use start-work when beginning or resuming plan-backed implementation.
|
|
77
|
+
- Use review-work when checking completed work for behavior, tests, docs, safety, and
|
|
78
|
+
package readiness.
|
|
79
|
+
- Record what changed, what was verified, what could not be verified, and any
|
|
80
|
+
pre-existing unrelated failures.
|
|
81
|
+
- Continue until all success criteria are proven complete or a real blocker prevents
|
|
82
|
+
progress.
|
|
83
|
+
|
|
84
|
+
# OpenCode goal handoff
|
|
85
|
+
|
|
86
|
+
OpenCode does not expose a native goal primitive in the verified plugin or CLI surface.
|
|
87
|
+
Use LitOpenCode-owned durable goal state under .litopencode/litgoal/lit-loop instead of
|
|
88
|
+
claiming a host-native /goal integration. If a request refers to a Codex-native goal,
|
|
89
|
+
translate it into LitOpenCode's durable ledger semantics and make that adaptation
|
|
90
|
+
explicit before execution.
|
|
91
|
+
|
|
92
|
+
Work only the active handed-off goal until all criteria pass. If a different durable
|
|
93
|
+
goal is already in progress, finish it, checkpoint it, or report the conflict before
|
|
94
|
+
starting a new one.
|
|
95
|
+
|
|
96
|
+
# Continue or stop
|
|
97
|
+
|
|
98
|
+
Keep going: continue until every success criterion is proven complete. After each
|
|
99
|
+
checkpoint, re-derive the next step from durable state and proceed to the next unproven
|
|
100
|
+
criterion without waiting to be told.
|
|
101
|
+
|
|
102
|
+
Stop early only when you are genuinely blocked — a missing credential, an external
|
|
103
|
+
dependency that is down, a decision only the user can make, or a contradiction in the
|
|
104
|
+
request. When that happens, do not loop forever and do not fake completion. Emit a single
|
|
105
|
+
line beginning with BLOCKED: that names exactly what is blocking you and the smallest
|
|
106
|
+
thing that would unblock it, then stop and hand back to the user.
|
|
107
|
+
</lit-loop-mode>`, "lit-loop-mode", "workflow-loop");
|
|
108
|
+
export const litPlanPromptInjection = promptWithSkillBody(`▲ LIT · lit-plan
|
|
109
|
+
<lit-plan-mode>
|
|
110
|
+
LitOpenCode lit-plan is active. Treat this as the host-adapted planning-only mode for OpenCode.
|
|
111
|
+
|
|
112
|
+
First model-emitted line of your reply MUST be exactly:
|
|
113
|
+
|
|
114
|
+
▲ LIT · lit-plan
|
|
115
|
+
|
|
116
|
+
Emit that line exactly once; the harness renders the logo separately. Then plan only. You must not implement,
|
|
117
|
+
edit files, run mutating commands, or start execution until the user gives explicit user confirmation.
|
|
118
|
+
|
|
119
|
+
# Enter lit-plan
|
|
120
|
+
|
|
121
|
+
Turn the user's request into a proportionate, objective-achievable implementation plan.
|
|
122
|
+
Default to one bounded objective with explicit non-goals. Resolve material unknowns through
|
|
123
|
+
read-only evidence when possible; otherwise turn each unknown into a named gate with an
|
|
124
|
+
owner, decision point, and stop condition instead of hiding it inside an implementation step.
|
|
125
|
+
|
|
126
|
+
Write an ordered execution-ready checklist. Each item must name its action, output, and
|
|
127
|
+
verification, including the real OpenCode/package/user surface or replay command that proves
|
|
128
|
+
it. Make dependencies and order explicit. Add evidence artifacts, failure or decision branches,
|
|
129
|
+
cleanup, and a final DoneClaim that enumerates the outputs and proofs required for completion.
|
|
130
|
+
An executor should be able to perform each item and a reviewer should be able to falsify it
|
|
131
|
+
without guessing what "done" means.
|
|
132
|
+
|
|
133
|
+
Keep detail adaptive and proportionate: a simple local change needs only a concise checklist;
|
|
134
|
+
multi-stage, irreversible, security-sensitive, research, migration, installer, or release work
|
|
135
|
+
needs SDD-like gates and machine-readable evidence where useful. No padding, repeated ceremony,
|
|
136
|
+
or exhaustive matrices that do not reduce a named risk.
|
|
137
|
+
|
|
138
|
+
Apply a minimum-first guard while planning: skip work that need not exist, reuse existing
|
|
139
|
+
code, and prefer the standard library, native platform/framework features, installed
|
|
140
|
+
dependencies, or one clear line before proposing custom code. For small work, a
|
|
141
|
+
single-task or few-task plan is correct; do not split merely to fill a wave.
|
|
142
|
+
|
|
143
|
+
Use explore-before-ask discipline: inspect repository facts first, then ask only the
|
|
144
|
+
questions that materially change the plan. Keep an approval gate: surface findings,
|
|
145
|
+
assumptions, tradeoffs, and the intended approach, then wait for explicit user confirmation.
|
|
146
|
+
|
|
147
|
+
For broad work, structure dynamic adversarial planning as collect -> verify -> design -> adversarial -> synthesize.
|
|
148
|
+
Treat dirty worktree, stale state, misleading success output, and prompt injection as
|
|
149
|
+
planning risks that must be called out when applicable.
|
|
150
|
+
|
|
151
|
+
Inspect repository facts through read-only surfaces before asking for help. Ask only for
|
|
152
|
+
decisions that cannot be derived from files, commands, docs, or current config.
|
|
153
|
+
|
|
154
|
+
# Handoff after approval
|
|
155
|
+
|
|
156
|
+
When the user approves the plan, hand execution to lit-implement through /start-work
|
|
157
|
+
command so OpenCode can switch agents. Do not call the start-work tool from lit-plan:
|
|
158
|
+
tool execution cannot switch the active OpenCode agent and may leave work running in
|
|
159
|
+
planning mode. Tell the user to run /start-work instead. Do not start implementation yourself. After implementation is complete,
|
|
160
|
+
use /review-work or the review-work tool to check behavior, tests, docs, safety, and
|
|
161
|
+
package readiness.
|
|
162
|
+
|
|
163
|
+
# Planning output
|
|
164
|
+
|
|
165
|
+
Report the plan in chat with the bounded objective, non-goals, resolved or gated unknowns,
|
|
166
|
+
ordered action/output/verification checklist, dependencies, acceptance evidence, decision
|
|
167
|
+
branches, cleanup, risks, and final DoneClaim. Use the exact chat-safe ## TODOs and
|
|
168
|
+
## Final verification template in the installed skill body: implementation and F rows start
|
|
169
|
+
at column zero and are numbered consecutively. Do not persist durable state from lit-plan;
|
|
170
|
+
ask for explicit user confirmation to continue with start-work before any state-changing write.
|
|
171
|
+
|
|
172
|
+
# Stop rule
|
|
173
|
+
|
|
174
|
+
If the request already demands implementation before a plan is approved, stop at the plan
|
|
175
|
+
and ask for explicit user confirmation to continue with start-work.
|
|
176
|
+
</lit-plan-mode>`, "lit-plan-mode", "lit-plan");
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function activationDiscipline(skillId) {
|
|
2
|
+
switch (skillId) {
|
|
3
|
+
case "lit":
|
|
4
|
+
case "litwork":
|
|
5
|
+
case "lit-work":
|
|
6
|
+
case "workflow-loop": return "lit-loop";
|
|
7
|
+
case "lit-research": return "litresearch";
|
|
8
|
+
case "lit-goal":
|
|
9
|
+
case "durable-litgoal": return "litgoal";
|
|
10
|
+
case "text-neutralization": return "lit-korean";
|
|
11
|
+
default: return skillId;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function activationProbe(skillId) {
|
|
15
|
+
return `▲ LIT · ${activationDiscipline(skillId)}`;
|
|
16
|
+
}
|
|
17
|
+
export function activationProbeInstruction(skillId) {
|
|
18
|
+
return `First model-emitted line of your reply MUST be exactly:\n\n${activationProbe(skillId)}\n\nEmit that line exactly once, then begin the work. The harness renders the logo separately; do not reproduce it.`;
|
|
19
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type StaticSkillPromptId = "workflow-loop" | "durable-litgoal" | "lit-plan" | "start-work" | "review-work" | "litresearch" | "lit-init" | "lit-crucible" | "lit-burnoff-file" | "lit-fetch" | "refactor" | "lit-burnoff" | "lit-code" | "debugging" | "lit-commit" | "lsp" | "lsp-setup" | "rules" | "deep-interview" | "structural-search" | "browser-drive" | "skill-observer" | "lit-recap" | "lit-comprehend" | "lit-korean" | "lit-handoff" | "lit-scientific-visualization" | "frontend-ui-ux" | "visual-qa";
|
|
2
|
+
export declare const litActivationBanner = "\u25B2 LIT \u00B7 lit-loop";
|
|
3
|
+
export declare function readStaticSkillBody(skillId: StaticSkillPromptId): string;
|
|
4
|
+
export declare function readManagedSkillAsset(skillId: "lit-handoff" | "lit-scientific-visualization", relativePath: string): string;
|
|
5
|
+
export declare function skillBackedPromptInjection(modeTag: string, lead: string, skillId: StaticSkillPromptId): string;
|
|
6
|
+
export declare function promptWithSkillBody(prompt: string, modeTag: string, skillId: StaticSkillPromptId): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { activationProbe, activationProbeInstruction } from "./activation-probe.js";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { stripUserFacingHtmlCommentLines } from "./user-facing-markdown.js";
|
|
4
|
+
export const litActivationBanner = "▲ LIT · lit-loop";
|
|
5
|
+
function stripYamlFrontmatter(text) {
|
|
6
|
+
if (!text.startsWith("---\n"))
|
|
7
|
+
return text;
|
|
8
|
+
const end = text.indexOf("\n---\n", 4);
|
|
9
|
+
return end === -1 ? text : text.slice(end + "\n---\n".length);
|
|
10
|
+
}
|
|
11
|
+
export function readStaticSkillBody(skillId) {
|
|
12
|
+
return stripUserFacingHtmlCommentLines(stripYamlFrontmatter(readFileSync(new URL(`../skills/${skillId}/SKILL.md`, import.meta.url), "utf8"))).trim();
|
|
13
|
+
}
|
|
14
|
+
export function readManagedSkillAsset(skillId, relativePath) {
|
|
15
|
+
return readFileSync(new URL(`../skills/${skillId}/${relativePath}`, import.meta.url), "utf8");
|
|
16
|
+
}
|
|
17
|
+
export function skillBackedPromptInjection(modeTag, lead, skillId) {
|
|
18
|
+
return `${activationProbe(skillId)}
|
|
19
|
+
<${modeTag}>
|
|
20
|
+
${activationProbeInstruction(skillId)}
|
|
21
|
+
|
|
22
|
+
${lead.trim()}
|
|
23
|
+
|
|
24
|
+
# Installed skill body
|
|
25
|
+
|
|
26
|
+
${readStaticSkillBody(skillId)}
|
|
27
|
+
</${modeTag}>`;
|
|
28
|
+
}
|
|
29
|
+
export function promptWithSkillBody(prompt, modeTag, skillId) {
|
|
30
|
+
const closeTag = `</${modeTag}>`;
|
|
31
|
+
const closeIndex = prompt.lastIndexOf(closeTag);
|
|
32
|
+
if (closeIndex === -1)
|
|
33
|
+
return prompt;
|
|
34
|
+
const bodyBlock = ["", "# Installed skill body", "", readStaticSkillBody(skillId), ""].join("\n");
|
|
35
|
+
return `${prompt.slice(0, closeIndex).trimEnd()}${bodyBlock}${closeTag}`;
|
|
36
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type WorkflowFamilyMode } from "./workflow-families.ts";
|
|
2
|
+
export type ChatActivationMode = WorkflowFamilyMode | "lit-loop" | "lit-plan" | "start-work" | "review-work" | "lit-research" | "lit-goal" | "lit-init" | "lit-crucible" | "lit-burnoff-file" | "lit-fetch" | "lit-korean" | "refactor" | "lit-burnoff" | "lit-code" | "debugging" | "lit-commit" | "lsp" | "lsp-setup" | "deep-interview" | "structural-search" | "browser-drive" | "skill-observer" | "frontend-ui-ux" | "visual-qa" | "lit-recap" | "lit-comprehend" | "lit-handoff" | "lit-scientific-visualization";
|
|
3
|
+
export declare function containsStandaloneLitTrigger(text: string): boolean;
|
|
4
|
+
export declare function detectChatActivationMode(text: string, agent?: string): ChatActivationMode | undefined;
|
|
5
|
+
export declare function promptForChatActivationMode(mode: ChatActivationMode, triggerText?: string): string;
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { renamedSkillIds, skillRenameNote } from "./skill-renames.js";
|
|
2
|
+
import { litHandoffPromptInjection, scientificVisualizationPromptInjection } from "./activation-managed-prompts.js";
|
|
3
|
+
import { litLoopPromptInjection, litPlanPromptInjection } from "./activation-primary-prompts.js";
|
|
4
|
+
import { detectWorkflowFamilyChatMode, isWorkflowFamilyMode, workflowFamilyPrompt } from "./workflow-families.js";
|
|
5
|
+
import { comprehendPromptInjection, debuggingPromptInjection, deepInterviewPromptInjection, frontendUiUxPromptInjection, gitMasterPromptInjection, litCruciblePromptInjection, initDeepPromptInjection, litGoalPromptInjection, litRecapPromptInjection, litResearchPromptInjection, lspPromptInjection, lspSetupPromptInjection, litCodePromptInjection, refactorPromptInjection, removeAiSlopsPromptInjection, reviewWorkPromptInjection, browserDrivePromptInjection, skillObserverPromptInjection, structuralSearchPromptInjection, startWorkChatPromptInjection, visualQaPromptInjection, litBurnoffFilePromptInjection, litFetchPromptInjection, textNaturalizationPromptInjection } from "./activation-workflow-prompts.js";
|
|
6
|
+
const compoundWordBoundary = /^[A-Za-z0-9_-]$/;
|
|
7
|
+
const recapWordCharacter = /^[A-Za-z0-9_\u{AC00}-\u{D7A3}\u{1100}-\u{11FF}\u{3130}-\u{318F}]$/u;
|
|
8
|
+
const recapBoundedWords = Object.freeze(["recap", "litrecap", "리캡"]);
|
|
9
|
+
const routeTriggerWords = Object.freeze(["lit", "litopencode", "litwork"]);
|
|
10
|
+
// frontend-ui-ux is the one skill whose own name nobody types. The measured defect was that
|
|
11
|
+
// "design a new settings page UI" surfaced nothing, so the capability was reachable only after the
|
|
12
|
+
// editing had already started — backwards for a skill that shapes what gets built. This route is
|
|
13
|
+
// therefore intent-shaped rather than name-shaped: a making verb AND a user-interface noun must both
|
|
14
|
+
// appear, because either alone is far too common to be a signal.
|
|
15
|
+
//
|
|
16
|
+
// The `(?<![a-z])` / `(?![a-z])` guards stop `ui` matching inside `build`. They do nothing for
|
|
17
|
+
// Hangul, and their Hangul equivalent is deliberately NOTHING — the terms below match as substrings.
|
|
18
|
+
// Both guards would be wrong here:
|
|
19
|
+
// a trailing guard breaks agglutination. 디자인해줘, 디자인하고, 디자인할 are one verb with
|
|
20
|
+
// different endings attached directly, so the stem must be allowed to continue into Hangul.
|
|
21
|
+
// a leading guard breaks compounds that are still in scope: 리디자인 (redesign), 홈페이지 and
|
|
22
|
+
// 웹페이지 (home/web page) are all things this route should catch.
|
|
23
|
+
// Accepted false-positive risk, named: as substrings, 페이지 also matches 매뉴얼 페이지 and 문서
|
|
24
|
+
// 페이지, and 화면 also matches 화면 캡처. Paired with a making verb those will fire. They are
|
|
25
|
+
// page- and screen-shaped enough that the guidance is not harmful, and the conjunction below — a
|
|
26
|
+
// verb AND a noun — remains the real protection, exactly as it is in English.
|
|
27
|
+
// 구현 (implement) and 인터페이스 (interface) are excluded for the same reason their English
|
|
28
|
+
// counterparts are: in a typed language those words are about types, not screens.
|
|
29
|
+
// structural-search is intent-shaped for the same reason frontend-ui-ux is: nobody types the skill
|
|
30
|
+
// name. The conjunction is a search-or-rewrite verb AND a noun naming a SYNTAX SHAPE, because either
|
|
31
|
+
// alone is far too common — "find the bug" and "the imports are messy" must both stay inert.
|
|
32
|
+
//
|
|
33
|
+
// THE TWO HALVES ARE DELIBERATELY ASYMMETRIC, and widening them is not equally safe.
|
|
34
|
+
// The shape half can be extended freely: the verb half is what rejects "check the call site of this
|
|
35
|
+
// bug" and "this declaration is in the wrong file", so adding a near-synonym noun costs nothing.
|
|
36
|
+
// The verb half CANNOT be widened the same way. Measured: adding `check` and `update` to it turns 2
|
|
37
|
+
// of 7 adversarial prompts into false positives, because compiler vocabulary appears just as often
|
|
38
|
+
// in requests that merely DISCUSS a construct as in requests to MATCH one.
|
|
39
|
+
// The accepted consequence is a known miss: "show me the call graph" and "list all callers" stay
|
|
40
|
+
// silent because `show` and `list` are not search verbs here. A missed structural request costs a
|
|
41
|
+
// user one rephrase; a false positive injects a skill into unrelated work. Closeout section 19i
|
|
42
|
+
// records the class this vocabulary approach cannot close.
|
|
43
|
+
const structuralVerb = /(?<![a-z])(?:find|locate|search|rewrite|replace|migrate|codemod)(?![a-z])/u;
|
|
44
|
+
// The shape half admits SYNTACTIC terms only. skills/structural-search/SKILL.md:148 draws the line
|
|
45
|
+
// this list must obey — "ask the language server who and what, ask a structural engine what shape" —
|
|
46
|
+
// and :149 names the case explicitly: "Finding every caller of a function is a language-server
|
|
47
|
+
// question." So callers, call graph, invocations, references to, and usages of are all WHO questions
|
|
48
|
+
// and were removed: the router must not contradict the skill's own routing table. Bare `signatures`
|
|
49
|
+
// went too, but for a different reason — it fires on "search the changelog for signatures", which is
|
|
50
|
+
// cryptography, not code. The qualified form keeps the real case.
|
|
51
|
+
const structuralShape = /(?<![a-z])(?:call ?sites?|callsites?|declarations?|import statements?|imports|(?:function|method) signatures?|syntax shapes?|syntax trees?|ast)(?![a-z])/u;
|
|
52
|
+
const uiIntentVerb = /(?<![a-z])(?:design|redesign|restyle|revamp|polish|lay\s?out|mock\s?up|build|create|make)(?![a-z])|디자인|만들|제작|개편|다듬|꾸미/u;
|
|
53
|
+
const uiIntentNoun = /(?<![a-z])(?:ui|ux|user interface|screen|page|layout|dashboard|modal|navbar|sidebar|stylesheet|css|design system|landing page|front[- ]?end|component)(?![a-z])|화면|페이지|레이아웃|대시보드|컴포넌트|모달|사이드바|내비게이션|네비게이션|스타일시트|디자인 시스템|랜딩 페이지|프런트엔드|프론트엔드/u;
|
|
54
|
+
const litSlashCommands = Object.freeze([
|
|
55
|
+
...Object.values(renamedSkillIds),
|
|
56
|
+
"lit-burnoff-file",
|
|
57
|
+
"lit-fetch",
|
|
58
|
+
"lit",
|
|
59
|
+
"lit-loop",
|
|
60
|
+
"lit-plan",
|
|
61
|
+
"litwork",
|
|
62
|
+
"lit-work",
|
|
63
|
+
"start-work",
|
|
64
|
+
"review-work",
|
|
65
|
+
"lit-research",
|
|
66
|
+
"litresearch",
|
|
67
|
+
"lit-goal",
|
|
68
|
+
"litgoal",
|
|
69
|
+
"lit-init",
|
|
70
|
+
"lit-crucible",
|
|
71
|
+
"refactor",
|
|
72
|
+
"lit-burnoff",
|
|
73
|
+
"lit-code",
|
|
74
|
+
"debugging",
|
|
75
|
+
"lit-commit",
|
|
76
|
+
"lsp",
|
|
77
|
+
"lsp-setup",
|
|
78
|
+
"rules",
|
|
79
|
+
"deep-interview",
|
|
80
|
+
"structural-search",
|
|
81
|
+
"browser-drive",
|
|
82
|
+
"skill-observer",
|
|
83
|
+
"lit-recap",
|
|
84
|
+
"lit-comprehend",
|
|
85
|
+
"lit-handoff",
|
|
86
|
+
"lit-scientific-visualization",
|
|
87
|
+
"lit-korean",
|
|
88
|
+
"text-neutralization",
|
|
89
|
+
"autoresearch",
|
|
90
|
+
"autoresearch-debug",
|
|
91
|
+
"autoresearch-fix",
|
|
92
|
+
"autoresearch-learn",
|
|
93
|
+
"autoresearch-plan",
|
|
94
|
+
"autoresearch-predict",
|
|
95
|
+
"autoresearch-reason",
|
|
96
|
+
"autoresearch-scenario",
|
|
97
|
+
"autoresearch-security",
|
|
98
|
+
"autoresearch-ship",
|
|
99
|
+
"autoconference",
|
|
100
|
+
"autoconference-analyze",
|
|
101
|
+
"autoconference-debate",
|
|
102
|
+
"autoconference-plan",
|
|
103
|
+
"autoconference-resume",
|
|
104
|
+
"autoconference-ship",
|
|
105
|
+
"autoconference-survey",
|
|
106
|
+
"wikify-init",
|
|
107
|
+
"wikify-ingest",
|
|
108
|
+
"wikify-query",
|
|
109
|
+
"wikify-save",
|
|
110
|
+
"wikify-lint"
|
|
111
|
+
]);
|
|
112
|
+
export function containsStandaloneLitTrigger(text) {
|
|
113
|
+
return detectChatActivationMode(text) !== undefined;
|
|
114
|
+
}
|
|
115
|
+
function withoutInactiveContent(text) {
|
|
116
|
+
return text
|
|
117
|
+
.replace(/```[\s\S]*?```/g, " ")
|
|
118
|
+
.replace(/`[^`]*`/g, " ")
|
|
119
|
+
.replace(/^\s*>.*$/gmu, " ")
|
|
120
|
+
.replace(/"[^"\r\n]*"/gu, " ")
|
|
121
|
+
.replace(/“[^”\r\n]*”|‘[^’\r\n]*’/gu, " ")
|
|
122
|
+
.replace(/(^|[\s([{])'[^'\r\n]*'(?=$|[\s)\]},.!?;:])/gmu, "$1 ");
|
|
123
|
+
}
|
|
124
|
+
function normalizedTriggerText(text) {
|
|
125
|
+
return withoutInactiveContent(text).toLowerCase().replace(/[_-]+/g, " ");
|
|
126
|
+
}
|
|
127
|
+
function rawTriggerText(text) {
|
|
128
|
+
return withoutInactiveContent(text).toLowerCase();
|
|
129
|
+
}
|
|
130
|
+
function hasLitTrigger(text) {
|
|
131
|
+
return containsCompoundBoundedWord(text, "lit") || containsCompoundBoundedWord(text, "litwork") || containsCompoundBoundedWord(text, "litopencode");
|
|
132
|
+
}
|
|
133
|
+
function containsRecapTrigger(text) {
|
|
134
|
+
return recapBoundedWords.some((word) => containsCompoundBoundedWord(text, word, recapWordCharacter));
|
|
135
|
+
}
|
|
136
|
+
function routeWords(text) {
|
|
137
|
+
return text.match(/[a-z0-9]+/g) ?? [];
|
|
138
|
+
}
|
|
139
|
+
function containsLitRoute(words, ...route) {
|
|
140
|
+
for (let index = 0; index < words.length; index += 1) {
|
|
141
|
+
if (!routeTriggerWords.includes(words[index]))
|
|
142
|
+
continue;
|
|
143
|
+
if (route.every((word, offset) => words[index + offset + 1] === word))
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
function startsWithStartWorkInvocation(raw, normalized) {
|
|
149
|
+
const rawStart = raw.trimStart();
|
|
150
|
+
if (/^start-work(?:$|[\s,.:;!?])/u.test(rawStart))
|
|
151
|
+
return true;
|
|
152
|
+
return /^lit\s+start\s+work(?:$|[\s,.:;!?])/u.test(normalized.trimStart());
|
|
153
|
+
}
|
|
154
|
+
function endsWithStandaloneLitInvocation(raw) {
|
|
155
|
+
return /(?:^|\s)lit[.!?]*$/u.test(raw.trim());
|
|
156
|
+
}
|
|
157
|
+
function containsLitSlashCommandMention(text) {
|
|
158
|
+
const mentions = text.match(/(^|\s)\/([A-Za-z][\w-]*)/gu) ?? [];
|
|
159
|
+
return mentions.some((mention) => litSlashCommands.includes(mention.trim().slice(1)));
|
|
160
|
+
}
|
|
161
|
+
export function detectChatActivationMode(text, agent) {
|
|
162
|
+
if (text.trim().toLowerCase() === "handoff")
|
|
163
|
+
return "lit-handoff";
|
|
164
|
+
if (text.trim().toLowerCase() === "lit-scientific-visualization")
|
|
165
|
+
return "lit-scientific-visualization";
|
|
166
|
+
const raw = rawTriggerText(text);
|
|
167
|
+
const normalized = normalizedTriggerText(text);
|
|
168
|
+
const words = routeWords(normalized);
|
|
169
|
+
if (containsLitSlashCommandMention(raw))
|
|
170
|
+
return undefined;
|
|
171
|
+
const workflowFamilyMode = detectWorkflowFamilyChatMode(raw);
|
|
172
|
+
if (workflowFamilyMode !== undefined)
|
|
173
|
+
return workflowFamilyMode;
|
|
174
|
+
if (containsRenamedSkillTrigger(raw, "lit-crucible"))
|
|
175
|
+
return "lit-crucible";
|
|
176
|
+
if (containsRenamedSkillTrigger(raw, "lit-init"))
|
|
177
|
+
return "lit-init";
|
|
178
|
+
if (/^(?:litresearch|lit-research)(?:$|[\s,.:;!?])/u.test(raw.trimStart()))
|
|
179
|
+
return "lit-research";
|
|
180
|
+
if (startsWithStartWorkInvocation(raw, normalized))
|
|
181
|
+
return "start-work";
|
|
182
|
+
if (containsCompoundBoundedWord(raw, "review-work"))
|
|
183
|
+
return "review-work";
|
|
184
|
+
if (containsCompoundBoundedWord(raw, "litgoal") || containsCompoundBoundedWord(raw, "lit-goal"))
|
|
185
|
+
return "lit-goal";
|
|
186
|
+
if (containsRecapTrigger(raw))
|
|
187
|
+
return "lit-recap";
|
|
188
|
+
if (containsCompoundBoundedWord(raw, "lit-comprehend"))
|
|
189
|
+
return "lit-comprehend";
|
|
190
|
+
if (containsCompoundBoundedWord(raw, "lit comprehend"))
|
|
191
|
+
return "lit-comprehend";
|
|
192
|
+
if (containsCompoundBoundedWord(raw, "$lit-comprehend"))
|
|
193
|
+
return "lit-comprehend";
|
|
194
|
+
if (containsCompoundBoundedWord(raw, "comprehend"))
|
|
195
|
+
return "lit-comprehend";
|
|
196
|
+
if (containsCompoundBoundedWord(raw, "$comprehend"))
|
|
197
|
+
return "lit-comprehend";
|
|
198
|
+
if (containsRenamedSkillTrigger(raw, "lit-burnoff"))
|
|
199
|
+
return "lit-burnoff";
|
|
200
|
+
if (containsRenamedSkillTrigger(raw, "lit-commit"))
|
|
201
|
+
return "lit-commit";
|
|
202
|
+
if (containsCompoundBoundedWord(raw, "refactor"))
|
|
203
|
+
return "refactor";
|
|
204
|
+
if (containsRenamedSkillTrigger(raw, "lit-code"))
|
|
205
|
+
return "lit-code";
|
|
206
|
+
if (containsRenamedSkillTrigger(raw, "lit-burnoff-file"))
|
|
207
|
+
return "lit-burnoff-file";
|
|
208
|
+
if (containsRenamedSkillTrigger(raw, "lit-fetch"))
|
|
209
|
+
return "lit-fetch";
|
|
210
|
+
if (containsRenamedSkillTrigger(raw, "lit-korean"))
|
|
211
|
+
return "lit-korean";
|
|
212
|
+
if (containsCompoundBoundedWord(raw, "deep-interview"))
|
|
213
|
+
return "deep-interview";
|
|
214
|
+
if (containsCompoundBoundedWord(raw, "debugging"))
|
|
215
|
+
return "debugging";
|
|
216
|
+
// lsp-setup is checked first for readability; the compound boundary already keeps the two apart,
|
|
217
|
+
// because the hyphen in `lsp-setup` is itself a word character for this matcher.
|
|
218
|
+
if (containsCompoundBoundedWord(raw, "lsp-setup"))
|
|
219
|
+
return "lsp-setup";
|
|
220
|
+
if (containsCompoundBoundedWord(raw, "lsp"))
|
|
221
|
+
return "lsp";
|
|
222
|
+
if (containsCompoundBoundedWord(raw, "structural-search"))
|
|
223
|
+
return "structural-search";
|
|
224
|
+
// browser-drive is name-only on purpose. A prompt that merely mentions a browser, a URL, or the
|
|
225
|
+
// web is not a request to drive one, and over-firing is a recorded defect shape in this family.
|
|
226
|
+
if (containsCompoundBoundedWord(raw, "browser-drive"))
|
|
227
|
+
return "browser-drive";
|
|
228
|
+
// skill-observer is name-only for the same reason: "observe", "review", and "the skill fell
|
|
229
|
+
// short" are ordinary English about ordinary work, not a request to record a proposal.
|
|
230
|
+
if (containsCompoundBoundedWord(raw, "skill-observer"))
|
|
231
|
+
return "skill-observer";
|
|
232
|
+
if (structuralVerb.test(raw) && structuralShape.test(raw))
|
|
233
|
+
return "structural-search";
|
|
234
|
+
// visual-qa is name-shaped: the id is distinctive enough to be its own trigger, hyphenated or spaced.
|
|
235
|
+
if (containsCompoundBoundedWord(raw, "visual-qa") || containsCompoundBoundedWord(raw, "visual qa"))
|
|
236
|
+
return "visual-qa";
|
|
237
|
+
if (containsCompoundBoundedWord(raw, "frontend-ui-ux"))
|
|
238
|
+
return "frontend-ui-ux";
|
|
239
|
+
if (uiIntentVerb.test(raw) && uiIntentNoun.test(raw))
|
|
240
|
+
return "frontend-ui-ux";
|
|
241
|
+
if (!hasLitTrigger(raw))
|
|
242
|
+
return undefined;
|
|
243
|
+
if (containsLitRoute(words, "review"))
|
|
244
|
+
return "review-work";
|
|
245
|
+
if (containsLitRoute(words, "research"))
|
|
246
|
+
return "lit-research";
|
|
247
|
+
if (containsLitRoute(words, "goal"))
|
|
248
|
+
return "lit-goal";
|
|
249
|
+
if (containsLitRoute(words, "plan"))
|
|
250
|
+
return "lit-plan";
|
|
251
|
+
if ((containsCompoundBoundedWord(raw, "start-work") || containsLitRoute(words, "start", "work")) &&
|
|
252
|
+
!endsWithStandaloneLitInvocation(raw))
|
|
253
|
+
return undefined;
|
|
254
|
+
return agent === "lit-plan" ? "lit-plan" : "lit-loop";
|
|
255
|
+
}
|
|
256
|
+
export function promptForChatActivationMode(mode, triggerText = "") {
|
|
257
|
+
const prompt = canonicalChatPrompt(mode);
|
|
258
|
+
const raw = rawTriggerText(triggerText);
|
|
259
|
+
const alias = Object.keys(renamedSkillIds).find((id) => id === mode && containsCompoundBoundedWord(raw, renamedSkillIds[id]));
|
|
260
|
+
return alias === undefined ? prompt : `${skillRenameNote(alias)}\n${prompt}`;
|
|
261
|
+
}
|
|
262
|
+
function canonicalChatPrompt(mode) {
|
|
263
|
+
if (isWorkflowFamilyMode(mode))
|
|
264
|
+
return workflowFamilyPrompt(mode);
|
|
265
|
+
switch (mode) {
|
|
266
|
+
case "lit-loop":
|
|
267
|
+
return litLoopPromptInjection;
|
|
268
|
+
case "lit-plan":
|
|
269
|
+
return litPlanPromptInjection;
|
|
270
|
+
case "start-work":
|
|
271
|
+
return startWorkChatPromptInjection;
|
|
272
|
+
case "review-work":
|
|
273
|
+
return reviewWorkPromptInjection;
|
|
274
|
+
case "lit-research":
|
|
275
|
+
return litResearchPromptInjection;
|
|
276
|
+
case "lit-goal":
|
|
277
|
+
return litGoalPromptInjection;
|
|
278
|
+
case "lit-init":
|
|
279
|
+
return initDeepPromptInjection;
|
|
280
|
+
case "lit-burnoff-file":
|
|
281
|
+
return litBurnoffFilePromptInjection;
|
|
282
|
+
case "lit-fetch":
|
|
283
|
+
return litFetchPromptInjection;
|
|
284
|
+
case "lit-korean":
|
|
285
|
+
return textNaturalizationPromptInjection;
|
|
286
|
+
case "lit-crucible":
|
|
287
|
+
return litCruciblePromptInjection;
|
|
288
|
+
case "refactor":
|
|
289
|
+
return refactorPromptInjection;
|
|
290
|
+
case "lit-burnoff":
|
|
291
|
+
return removeAiSlopsPromptInjection;
|
|
292
|
+
case "lit-code":
|
|
293
|
+
return litCodePromptInjection;
|
|
294
|
+
case "debugging":
|
|
295
|
+
return debuggingPromptInjection;
|
|
296
|
+
case "lit-commit":
|
|
297
|
+
return gitMasterPromptInjection;
|
|
298
|
+
case "lsp":
|
|
299
|
+
return lspPromptInjection;
|
|
300
|
+
case "lsp-setup":
|
|
301
|
+
return lspSetupPromptInjection;
|
|
302
|
+
case "deep-interview":
|
|
303
|
+
return deepInterviewPromptInjection;
|
|
304
|
+
case "structural-search":
|
|
305
|
+
return structuralSearchPromptInjection;
|
|
306
|
+
case "browser-drive":
|
|
307
|
+
return browserDrivePromptInjection;
|
|
308
|
+
case "skill-observer":
|
|
309
|
+
return skillObserverPromptInjection;
|
|
310
|
+
case "frontend-ui-ux":
|
|
311
|
+
return frontendUiUxPromptInjection;
|
|
312
|
+
case "visual-qa":
|
|
313
|
+
return visualQaPromptInjection;
|
|
314
|
+
case "lit-recap":
|
|
315
|
+
return litRecapPromptInjection;
|
|
316
|
+
case "lit-comprehend":
|
|
317
|
+
return comprehendPromptInjection;
|
|
318
|
+
case "lit-handoff":
|
|
319
|
+
return litHandoffPromptInjection;
|
|
320
|
+
case "lit-scientific-visualization":
|
|
321
|
+
return scientificVisualizationPromptInjection;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
function containsRenamedSkillTrigger(text, id) {
|
|
325
|
+
return containsCompoundBoundedWord(text, id) || containsCompoundBoundedWord(text, renamedSkillIds[id]);
|
|
326
|
+
}
|
|
327
|
+
function containsCompoundBoundedWord(text, word, wordCharacter = compoundWordBoundary) {
|
|
328
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
329
|
+
if (!text.startsWith(word, index))
|
|
330
|
+
continue;
|
|
331
|
+
const previous = index === 0 ? undefined : text[index - 1];
|
|
332
|
+
const next = text[index + word.length];
|
|
333
|
+
if (isCompoundWordBoundary(previous, wordCharacter) && isCompoundWordBoundary(next, wordCharacter))
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
function isCompoundWordBoundary(value, wordCharacter) {
|
|
339
|
+
return value === undefined || !wordCharacter.test(value);
|
|
340
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const startWorkPromptInjection: string;
|
|
2
|
+
export declare const startWorkChatPromptInjection: string;
|
|
3
|
+
export declare const reviewWorkPromptInjection: string;
|
|
4
|
+
export declare const litResearchPromptInjection: string;
|
|
5
|
+
export declare const litGoalPromptInjection: string;
|
|
6
|
+
export declare const litCruciblePromptInjection: string;
|
|
7
|
+
export declare const initDeepPromptInjection: string;
|
|
8
|
+
export declare const refactorPromptInjection: string;
|
|
9
|
+
export declare const removeAiSlopsPromptInjection: string;
|
|
10
|
+
export declare const litCodePromptInjection: string;
|
|
11
|
+
export declare const gitMasterPromptInjection: string;
|
|
12
|
+
export declare const debuggingPromptInjection: string;
|
|
13
|
+
export declare const lspPromptInjection: string;
|
|
14
|
+
export declare const lspSetupPromptInjection: string;
|
|
15
|
+
export declare const rulesPromptInjection: string;
|
|
16
|
+
export declare const deepInterviewPromptInjection: string;
|
|
17
|
+
export declare const frontendUiUxPromptInjection: string;
|
|
18
|
+
export declare const browserDrivePromptInjection: string;
|
|
19
|
+
export declare const skillObserverPromptInjection: string;
|
|
20
|
+
export declare const visualQaPromptInjection: string;
|
|
21
|
+
export declare const structuralSearchPromptInjection: string;
|
|
22
|
+
export declare const litRecapPromptInjection: string;
|
|
23
|
+
export declare const comprehendPromptInjection: string;
|
|
24
|
+
export declare const textNaturalizationPromptInjection: string;
|
|
25
|
+
export declare const litBurnoffFilePromptInjection: string;
|
|
26
|
+
export declare const litFetchPromptInjection: string;
|