@codyswann/lisa 2.195.3 → 2.195.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -3
- package/all/copy-contents/gitignore +10 -4
- package/dist/cli/print-update-warning.d.ts +1 -1
- package/dist/cli/print-update-warning.js +2 -2
- package/dist/cli/print-update-warning.js.map +1 -1
- package/dist/cli/update-check.d.ts +6 -0
- package/dist/cli/update-check.d.ts.map +1 -1
- package/dist/cli/update-check.js +3 -3
- package/dist/cli/update-check.js.map +1 -1
- package/dist/cli/update-cmd.d.ts +1 -1
- package/dist/cli/update-cmd.d.ts.map +1 -1
- package/dist/cli/update-cmd.js +8 -7
- package/dist/cli/update-cmd.js.map +1 -1
- package/dist/codex/hooks-installer.d.ts +4 -1
- package/dist/codex/hooks-installer.d.ts.map +1 -1
- package/dist/codex/hooks-installer.js +109 -30
- package/dist/codex/hooks-installer.js.map +1 -1
- package/dist/codex/mcp-installer.d.ts +22 -0
- package/dist/codex/mcp-installer.d.ts.map +1 -0
- package/dist/codex/mcp-installer.js +135 -0
- package/dist/codex/mcp-installer.js.map +1 -0
- package/dist/codex/plugin-marketplace-installer.d.ts +19 -13
- package/dist/codex/plugin-marketplace-installer.d.ts.map +1 -1
- package/dist/codex/plugin-marketplace-installer.js +69 -72
- package/dist/codex/plugin-marketplace-installer.js.map +1 -1
- package/dist/codex/project-hooks-cleanup.d.ts +12 -0
- package/dist/codex/project-hooks-cleanup.d.ts.map +1 -0
- package/dist/codex/project-hooks-cleanup.js +31 -0
- package/dist/codex/project-hooks-cleanup.js.map +1 -0
- package/dist/codex/project-overlay.d.ts +23 -0
- package/dist/codex/project-overlay.d.ts.map +1 -0
- package/dist/codex/project-overlay.js +64 -0
- package/dist/codex/project-overlay.js.map +1 -0
- package/dist/codex/scripts/inject-rules.sh +4 -0
- package/dist/codex/scripts/install-pkgs.sh +4 -0
- package/dist/codex/scripts/setup-jira-cli.sh +5 -1
- package/dist/codex/settings-installer.d.ts.map +1 -1
- package/dist/codex/settings-installer.js +16 -3
- package/dist/codex/settings-installer.js.map +1 -1
- package/dist/codex/skills-installer.d.ts +15 -19
- package/dist/codex/skills-installer.d.ts.map +1 -1
- package/dist/codex/skills-installer.js +47 -140
- package/dist/codex/skills-installer.js.map +1 -1
- package/dist/core/lisa-plugin-selection.d.ts +16 -0
- package/dist/core/lisa-plugin-selection.d.ts.map +1 -0
- package/dist/core/lisa-plugin-selection.js +59 -0
- package/dist/core/lisa-plugin-selection.js.map +1 -0
- package/dist/core/lisa-rules-mirror.d.ts +2 -1
- package/dist/core/lisa-rules-mirror.d.ts.map +1 -1
- package/dist/core/lisa-rules-mirror.js +19 -3
- package/dist/core/lisa-rules-mirror.js.map +1 -1
- package/dist/core/lisa-skill-sources.d.ts.map +1 -1
- package/dist/core/lisa-skill-sources.js +16 -1
- package/dist/core/lisa-skill-sources.js.map +1 -1
- package/dist/core/lisa.d.ts +4 -6
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +12 -38
- package/dist/core/lisa.js.map +1 -1
- package/dist/migrations/ensure-lisa-postinstall.d.ts.map +1 -1
- package/dist/migrations/ensure-lisa-postinstall.js +4 -3
- package/dist/migrations/ensure-lisa-postinstall.js.map +1 -1
- package/dist/opencode/plugin-templates/lisa-session-bootstrap.ts +2 -3
- package/npm-package/create-only/.github/workflows/publish-to-npm.yml +2 -1
- package/package.json +2 -3
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa/.codex-plugin/skills/lisa-acceptance-criteria/SKILL.md +71 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-acceptance-criteria/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-agent-design-best-practices/SKILL.md +219 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-agent-design-best-practices/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-analyze-claude-remote/SKILL.md +429 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-analyze-claude-remote/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-atlassian-access/SKILL.md +361 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-atlassian-access/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs +214 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-automation-status/SKILL.md +111 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-automation-status/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-bug-triage/SKILL.md +23 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-bug-triage/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-codebase-research/SKILL.md +87 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-codebase-research/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-codify-verification/SKILL.md +162 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-codify-verification/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-prd-intake/SKILL.md +417 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-prd-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-to-tracker/SKILL.md +356 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-to-tracker/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-write-prd/SKILL.md +109 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-write-prd/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-cross-pollinate/SKILL.md +175 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-cross-pollinate/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-debrief/SKILL.md +94 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-debrief/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-debrief-apply/SKILL.md +63 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-debrief-apply/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +336 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-doctor/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/SKILL.md +179 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-drive-pr-to-merge/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-epic-triage/SKILL.md +28 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-epic-triage/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-exploratory-qa/SKILL.md +91 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-exploratory-qa/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-fix-linter-error/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-generate-claude-remote-build-script/SKILL.md +224 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-generate-claude-remote-build-script/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-git-commit/SKILL.md +48 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-git-commit/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-git-prune/SKILL.md +35 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-git-prune/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-git-submit-pr/SKILL.md +113 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-git-submit-pr/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-add-journey/SKILL.md +115 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-add-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/SKILL.md +446 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-build-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-create/SKILL.md +101 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-create/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-evidence/SKILL.md +110 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-evidence/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-journey/SKILL.md +121 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-prd-intake/SKILL.md +432 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-prd-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-project-v2/SKILL.md +227 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-project-v2/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-read-issue/SKILL.md +248 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-read-issue/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-sync/SKILL.md +132 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-sync/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-to-tracker/SKILL.md +339 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-to-tracker/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +330 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-verify/SKILL.md +29 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-verify/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/SKILL.md +339 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-write-issue/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-write-prd/SKILL.md +157 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-github-write-prd/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-implement/SKILL.md +202 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-implement/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-code-complexity/SKILL.md +44 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-code-complexity/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-max-lines/SKILL.md +45 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-max-lines/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-max-lines-per-function/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-test-coverage/SKILL.md +44 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-test-coverage/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-tests/SKILL.md +47 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-improve-tests/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-intake/SKILL.md +133 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-intake-explain/SKILL.md +279 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-intake-explain/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jam-access/SKILL.md +52 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jam-access/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-add-journey/SKILL.md +121 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-add-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +368 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-create/SKILL.md +154 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-create/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-evidence/SKILL.md +90 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-evidence/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-evidence/scripts/post-evidence.sh +180 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/SKILL.md +127 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/scripts/generate-templates.py +233 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-read-ticket/SKILL.md +198 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-read-ticket/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-read-ticket/scripts/download-attachment.sh +110 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-sync/SKILL.md +108 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-sync/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +317 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-verify/SKILL.md +30 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-verify/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/SKILL.md +267 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-write-ticket/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jsdoc-best-practices/SKILL.md +432 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-jsdoc-best-practices/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +90 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-add-journey/SKILL.md +105 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-add-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +346 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-create/SKILL.md +146 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-create/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-evidence/SKILL.md +103 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-evidence/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-journey/SKILL.md +134 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-prd-intake/SKILL.md +383 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-prd-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-read-issue/SKILL.md +200 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-read-issue/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/SKILL.md +127 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/SKILL.md +339 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +314 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-verify/SKILL.md +51 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-verify/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +292 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-prd/SKILL.md +96 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-prd/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-monitor/SKILL.md +69 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-monitor/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-nightly-add-test-coverage/SKILL.md +40 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-nightly-add-test-coverage/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-nightly-improve-tests/SKILL.md +29 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-nightly-improve-tests/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-nightly-lower-code-complexity/SKILL.md +28 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-nightly-lower-code-complexity/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-access/SKILL.md +226 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-access/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-prd-intake/SKILL.md +360 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-prd-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/SKILL.md +353 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-write-prd/SKILL.md +109 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-write-prd/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-code-review/SKILL.md +83 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-code-review/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-code-simplifier/SKILL.md +76 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-code-simplifier/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-coderabbit/SKILL.md +77 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-coderabbit/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-safety-net-rules/SKILL.md +144 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-safety-net-rules/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-sentry-sdk-setup/SKILL.md +211 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-sentry-sdk-setup/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-sentry-seer/SKILL.md +135 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-sentry-seer/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-skill-creator/SKILL.md +151 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-parity-skill-creator/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-performance-review/SKILL.md +94 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-performance-review/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-plan/SKILL.md +60 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-plan/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-plugin-sync-explain/SKILL.md +53 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-plugin-sync-explain/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-posthog-access/SKILL.md +60 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-posthog-access/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-prd-backlink/SKILL.md +265 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-prd-backlink/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-prd-source-write/SKILL.md +101 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-prd-source-write/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-prd-ticket-coverage/SKILL.md +170 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-prd-ticket-coverage/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-product-walkthrough/SKILL.md +104 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-product-walkthrough/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/SKILL.md +315 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/examples/evidence-card-format.md +21 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/examples/host-project-only.md +22 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/examples/idempotency-verification-harness.md +57 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/examples/public-external-inspiration.md +22 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-project-ideation/examples/unavailable-data-rejection.md +22 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-pull-request-review/SKILL.md +84 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-pull-request-review/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-quality-review/SKILL.md +54 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-quality-review/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-queue-status/SKILL.md +133 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-queue-status/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +1030 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-reproduce-bug/SKILL.md +96 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-reproduce-bug/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-research/SKILL.md +68 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-research/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-review-implementation/SKILL.md +209 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-review-implementation/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-review-local/SKILL.md +88 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-review-local/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-root-cause-analysis/SKILL.md +155 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-root-cause-analysis/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-security-review/SKILL.md +57 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-security-review/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-security-zap-scan/SKILL.md +33 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-security-zap-scan/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-sentry-access/SKILL.md +56 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-sentry-access/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-atlassian/SKILL.md +347 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-atlassian/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-automations/SKILL.md +103 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-automations/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-confluence/SKILL.md +254 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-confluence/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-github/SKILL.md +268 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-github/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-jira/SKILL.md +198 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-jira/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-linear/SKILL.md +251 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-linear/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-notion/SKILL.md +316 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-notion/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-sonarcloud-access/SKILL.md +71 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-sonarcloud-access/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-spec-conformance/SKILL.md +159 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-spec-conformance/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-sync-down/SKILL.md +171 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-sync-down/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-task-decomposition/SKILL.md +127 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-task-decomposition/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-task-triage/SKILL.md +23 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-task-triage/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tdd-implementation/SKILL.md +86 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tdd-implementation/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tear-down-automations/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-test-strategy/SKILL.md +63 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-test-strategy/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-ticket-triage/SKILL.md +186 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-ticket-triage/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-add-journey/SKILL.md +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-add-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-build-intake/SKILL.md +86 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-build-intake/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-create/SKILL.md +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-create/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-evidence/SKILL.md +53 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-evidence/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-journey/SKILL.md +27 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-journey/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-read/SKILL.md +28 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-read/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-source-artifacts/SKILL.md +107 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-source-artifacts/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +65 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-validate/SKILL.md +37 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-validate/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-verify/SKILL.md +29 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-verify/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-write/SKILL.md +54 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-write/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-usage-accounting/SKILL.md +170 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-usage-accounting/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-use-the-product/SKILL.md +86 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-use-the-product/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-validate-tracker-mapping/SKILL.md +195 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-validate-tracker-mapping/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-verification-lifecycle/SKILL.md +365 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-verification-lifecycle/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-verify/SKILL.md +52 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-verify/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-verify-prd/SKILL.md +392 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-verify-prd/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-wiki-install/SKILL.md +101 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-wiki-install/agents/openai.yaml +4 -0
- package/plugins/lisa/hooks/inject-rules.sh +3 -2
- package/plugins/lisa/hooks/install-pkgs.sh +4 -45
- package/plugins/lisa/hooks/setup-jira-cli.sh +4 -12
- package/plugins/lisa/skills/lisa-setup-linear/SKILL.md +1 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-linear/SKILL.md +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/hooks/inject-rules.sh +3 -2
- package/plugins/lisa-copilot/hooks/install-pkgs.sh +4 -45
- package/plugins/lisa-copilot/hooks/setup-jira-cli.sh +4 -12
- package/plugins/lisa-copilot/skills/lisa-setup-linear/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/install-pkgs.sh +4 -45
- package/plugins/lisa-cursor/hooks/setup-jira-cli.sh +4 -12
- package/plugins/lisa-cursor/skills/lisa-setup-linear/SKILL.md +1 -1
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa-expo/.codex-plugin/skills/add-app-clip/SKILL.md +280 -0
- package/plugins/lisa-expo/.codex-plugin/skills/add-app-clip/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/add-app-clip/references/native-module.md +96 -0
- package/plugins/lisa-expo/.codex-plugin/skills/apollo-client/SKILL.md +238 -0
- package/plugins/lisa-expo/.codex-plugin/skills/apollo-client/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/apollo-client/references/mutation-patterns.md +360 -0
- package/plugins/lisa-expo/.codex-plugin/skills/atomic-design-gluestack/SKILL.md +367 -0
- package/plugins/lisa-expo/.codex-plugin/skills/atomic-design-gluestack/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/atomic-design-gluestack/references/atomic-levels.md +417 -0
- package/plugins/lisa-expo/.codex-plugin/skills/atomic-design-gluestack/references/folder-structure.md +257 -0
- package/plugins/lisa-expo/.codex-plugin/skills/atomic-design-gluestack/references/gluestack-mapping.md +233 -0
- package/plugins/lisa-expo/.codex-plugin/skills/atomic-design-gluestack/scripts/test_validate_atomic_structure.py +240 -0
- package/plugins/lisa-expo/.codex-plugin/skills/atomic-design-gluestack/scripts/validate_atomic_structure.py +438 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/SKILL.md +321 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/animations.md +220 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/controls.md +272 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/form-sheet.md +253 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/gradients.md +106 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/icons.md +213 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/media.md +198 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/route-structure.md +229 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/search.md +248 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/storage.md +121 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/tabs.md +433 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/visual-effects.md +197 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/webgpu-three.md +605 -0
- package/plugins/lisa-expo/.codex-plugin/skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/SKILL.md +299 -0
- package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/references/examples.md +749 -0
- package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/references/patterns.md +318 -0
- package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/scripts/create_component.py +200 -0
- package/plugins/lisa-expo/.codex-plugin/skills/container-view-pattern/scripts/validate_component.py +209 -0
- package/plugins/lisa-expo/.codex-plugin/skills/cross-platform-compatibility/SKILL.md +268 -0
- package/plugins/lisa-expo/.codex-plugin/skills/cross-platform-compatibility/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/cross-platform-compatibility/references/common-issues.md +619 -0
- package/plugins/lisa-expo/.codex-plugin/skills/cross-platform-compatibility/references/file-extensions.md +340 -0
- package/plugins/lisa-expo/.codex-plugin/skills/cross-platform-compatibility/references/platform-api.md +276 -0
- package/plugins/lisa-expo/.codex-plugin/skills/cross-platform-compatibility/scripts/validate_cross_platform.py +416 -0
- package/plugins/lisa-expo/.codex-plugin/skills/directory-structure/SKILL.md +214 -0
- package/plugins/lisa-expo/.codex-plugin/skills/directory-structure/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/directory-structure/scripts/validate_structure.py +454 -0
- package/plugins/lisa-expo/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-expo/.codex-plugin/skills/e2e-coverage-gaps/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/eas-update-insights/SKILL.md +228 -0
- package/plugins/lisa-expo/.codex-plugin/skills/eas-update-insights/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/plugins/lisa-expo/.codex-plugin/skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-api-routes/SKILL.md +369 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-api-routes/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-brownfield/SKILL.md +54 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-brownfield/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-brownfield/references/comparison.md +63 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-cicd-workflows/SKILL.md +92 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-cicd-workflows/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-cicd-workflows/scripts/fetch.js +113 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-cicd-workflows/scripts/validate.js +85 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-deployment/SKILL.md +193 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-deployment/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-deployment/references/app-store-metadata.md +479 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-deployment/references/ios-app-store.md +355 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-deployment/references/play-store.md +264 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-deployment/references/testflight.md +58 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-deployment/references/workflows.md +200 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-dev-client/SKILL.md +164 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-dev-client/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-env-config/SKILL.md +309 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-env-config/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-env-config/references/validation-patterns.md +417 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/SKILL.md +141 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/references/config-plugin.md +90 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/references/create-expo-module.md +206 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/references/lifecycle.md +127 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/references/module-config.md +48 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/references/native-module.md +286 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-module/references/native-view.md +171 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-router-best-practices/SKILL.md +431 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-router-best-practices/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-router-best-practices/references/official-docs.md +290 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-router-best-practices/scripts/generate-route.py +171 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-ui-jetpack-compose/SKILL.md +40 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-ui-jetpack-compose/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-ui-swift-ui/SKILL.md +39 -0
- package/plugins/lisa-expo/.codex-plugin/skills/expo-ui-swift-ui/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/gluestack-nativewind/SKILL.md +419 -0
- package/plugins/lisa-expo/.codex-plugin/skills/gluestack-nativewind/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/gluestack-nativewind/references/color-tokens.md +343 -0
- package/plugins/lisa-expo/.codex-plugin/skills/gluestack-nativewind/references/component-mapping.md +307 -0
- package/plugins/lisa-expo/.codex-plugin/skills/gluestack-nativewind/references/spacing-scale.md +300 -0
- package/plugins/lisa-expo/.codex-plugin/skills/gluestack-nativewind/scripts/test_validate_styling.py +240 -0
- package/plugins/lisa-expo/.codex-plugin/skills/gluestack-nativewind/scripts/validate_styling.py +424 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-add-journey/SKILL.md +126 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-add-journey/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-create/SKILL.md +161 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-create/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-evidence/SKILL.md +78 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-evidence/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-evidence/scripts/post-evidence.sh +180 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-journey/SKILL.md +190 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-journey/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-journey/scripts/generate-templates.py +281 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-journey/scripts/parse-plan.py +368 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-verify/SKILL.md +27 -0
- package/plugins/lisa-expo/.codex-plugin/skills/jira-verify/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +13 -0
- package/plugins/lisa-expo/.codex-plugin/skills/lisa-e2e-coverage-gaps/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/local-state/SKILL.md +362 -0
- package/plugins/lisa-expo/.codex-plugin/skills/local-state/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/local-state/references/async-storage.md +505 -0
- package/plugins/lisa-expo/.codex-plugin/skills/local-state/references/persistence-patterns.md +711 -0
- package/plugins/lisa-expo/.codex-plugin/skills/local-state/references/reactive-variables.md +446 -0
- package/plugins/lisa-expo/.codex-plugin/skills/native-data-fetching/SKILL.md +507 -0
- package/plugins/lisa-expo/.codex-plugin/skills/native-data-fetching/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/native-data-fetching/references/expo-router-loaders.md +344 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-browser-uat/SKILL.md +124 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-browser-uat/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-check-logs/SKILL.md +217 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-check-logs/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-db-ops/SKILL.md +123 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-db-ops/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-deploy/SKILL.md +123 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-deploy/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-monitor-errors/SKILL.md +99 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-monitor-errors/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-performance/SKILL.md +165 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-performance/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-run-local/SKILL.md +169 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-run-local/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-verify-health/SKILL.md +101 -0
- package/plugins/lisa-expo/.codex-plugin/skills/ops-verify-health/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/owasp-zap/SKILL.md +61 -0
- package/plugins/lisa-expo/.codex-plugin/skills/owasp-zap/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/play-store-access/SKILL.md +226 -0
- package/plugins/lisa-expo/.codex-plugin/skills/play-store-access/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/playwright-ci-debugging/SKILL.md +140 -0
- package/plugins/lisa-expo/.codex-plugin/skills/playwright-ci-debugging/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/playwright-selectors/SKILL.md +455 -0
- package/plugins/lisa-expo/.codex-plugin/skills/playwright-selectors/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/reduce-complexity/SKILL.md +251 -0
- package/plugins/lisa-expo/.codex-plugin/skills/reduce-complexity/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/reduce-complexity/references/extraction-strategies.md +456 -0
- package/plugins/lisa-expo/.codex-plugin/skills/reduce-complexity/references/refactoring-patterns.md +557 -0
- package/plugins/lisa-expo/.codex-plugin/skills/testing-library/SKILL.md +314 -0
- package/plugins/lisa-expo/.codex-plugin/skills/testing-library/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/testing-library/references/async-patterns.md +420 -0
- package/plugins/lisa-expo/.codex-plugin/skills/testing-library/references/expo-router-testing.md +556 -0
- package/plugins/lisa-expo/.codex-plugin/skills/testing-library/references/mocking-patterns.md +590 -0
- package/plugins/lisa-expo/.codex-plugin/skills/testing-library/references/query-priority.md +291 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/SKILL.md +134 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/references/native-tabs.md +124 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/references/new-architecture.md +79 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/references/react-19.md +79 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/references/react-compiler.md +59 -0
- package/plugins/lisa-expo/.codex-plugin/skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/plugins/lisa-expo/.codex-plugin/skills/use-dom/SKILL.md +417 -0
- package/plugins/lisa-expo/.codex-plugin/skills/use-dom/agents/openai.yaml +4 -0
- package/plugins/lisa-expo/.mcp.json +0 -4
- package/plugins/lisa-expo/THIRD-PARTY-NOTICES.md +14 -6
- package/plugins/lisa-expo/skills/building-native-ui/SKILL.md +1 -1
- package/plugins/lisa-expo-agy/THIRD-PARTY-NOTICES.md +14 -6
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-agy/skills/building-native-ui/SKILL.md +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -7
- package/plugins/lisa-expo-copilot/.mcp.json +0 -4
- package/plugins/lisa-expo-copilot/THIRD-PARTY-NOTICES.md +14 -6
- package/plugins/lisa-expo-copilot/skills/building-native-ui/SKILL.md +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/THIRD-PARTY-NOTICES.md +14 -6
- package/plugins/lisa-expo-cursor/mcp.json +0 -4
- package/plugins/lisa-expo-cursor/skills/building-native-ui/SKILL.md +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/e2e-coverage-gaps/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-auth/SKILL.md +368 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-auth/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-build-and-deploy/SKILL.md +198 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-build-and-deploy/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-caching/SKILL.md +265 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-caching/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-component-model/SKILL.md +87 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-component-model/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-config-yaml/SKILL.md +283 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-config-yaml/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-operations/SKILL.md +239 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-operations/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-realtime/SKILL.md +187 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-realtime/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-resources/SKILL.md +142 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-resources/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-rest-queries/SKILL.md +403 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-rest-queries/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-schema-graphql/SKILL.md +123 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-schema-graphql/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-testing/SKILL.md +254 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/harper-testing/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +13 -0
- package/plugins/lisa-harper-fabric/.codex-plugin/skills/lisa-e2e-coverage-gaps/agents/openai.yaml +4 -0
- package/plugins/lisa-harper-fabric/hooks/block-generated-artifact-edits.sh +42 -24
- package/plugins/lisa-harper-fabric/hooks/enforce-config-extensions.mjs +12 -14
- package/plugins/lisa-harper-fabric/hooks/enforce-config-extensions.sh +30 -3
- package/plugins/lisa-harper-fabric/hooks/inject-rules.sh +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/hooks/block-generated-artifact-edits.sh +42 -24
- package/plugins/lisa-harper-fabric-copilot/hooks/enforce-config-extensions.mjs +12 -14
- package/plugins/lisa-harper-fabric-copilot/hooks/enforce-config-extensions.sh +30 -3
- package/plugins/lisa-harper-fabric-copilot/hooks/inject-rules.sh +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/hooks/block-generated-artifact-edits.sh +42 -24
- package/plugins/lisa-harper-fabric-cursor/hooks/enforce-config-extensions.mjs +12 -14
- package/plugins/lisa-harper-fabric-cursor/hooks/enforce-config-extensions.sh +30 -3
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-graphql/SKILL.md +176 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-graphql/agents/openai.yaml +4 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-graphql/references/advanced-features.md +527 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-graphql/references/project-patterns.md +531 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-graphql/references/quick-start.md +257 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-graphql/references/resolvers-mutations.md +413 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-graphql/references/types-scalars.md +513 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-rules/SKILL.md +565 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/nestjs-rules/agents/openai.yaml +4 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/typeorm-patterns/SKILL.md +275 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/typeorm-patterns/agents/openai.yaml +4 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/typeorm-patterns/references/configuration-patterns.md +487 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/typeorm-patterns/references/entity-patterns.md +450 -0
- package/plugins/lisa-nestjs/.codex-plugin/skills/typeorm-patterns/references/observability-patterns.md +536 -0
- package/plugins/lisa-nestjs/skills/typeorm-patterns/references/configuration-patterns.md +5 -5
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/skills/typeorm-patterns/references/configuration-patterns.md +5 -5
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/skills/typeorm-patterns/references/configuration-patterns.md +5 -5
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/skills/typeorm-patterns/references/configuration-patterns.md +5 -5
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-connect-repo-topic/SKILL.md +13 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-connect-repo-topic/agents/openai.yaml +4 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-connect-staff-slack/SKILL.md +13 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-connect-staff-slack/agents/openai.yaml +4 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-connect-staff-telegram/SKILL.md +13 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-connect-staff-telegram/agents/openai.yaml +4 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-connect-repo-topic/SKILL.md +163 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-connect-repo-topic/agents/openai.yaml +4 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-connect-repo-topic/references/repo-topic-config.md +185 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-connect-staff/SKILL.md +175 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-connect-staff/agents/openai.yaml +4 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-connect-staff/references/platform-routing.md +123 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-connect-staff/references/prompts.md +78 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-setup/SKILL.md +141 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-openclaw-setup/agents/openai.yaml +4 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-setup-openclaw/SKILL.md +13 -0
- package/plugins/lisa-openclaw/.codex-plugin/skills/lisa-setup-openclaw/agents/openai.yaml +4 -0
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-accessibility/SKILL.md +135 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-accessibility/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-asset-pipeline/SKILL.md +222 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-asset-pipeline/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-asset-sourcing/SKILL.md +151 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-asset-sourcing/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-build-deploy/SKILL.md +153 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-build-deploy/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-i18n/SKILL.md +122 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-i18n/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-project-structure/SKILL.md +89 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-project-structure/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-services/SKILL.md +208 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-services/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-testing/SKILL.md +192 -0
- package/plugins/lisa-phaser/.codex-plugin/skills/phaser-testing/agents/openai.yaml +4 -0
- package/plugins/lisa-phaser/hooks/inject-rules.sh +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/hooks/inject-rules.sh +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa-rails/.codex-plugin/skills/action-controller-best-practices/SKILL.md +374 -0
- package/plugins/lisa-rails/.codex-plugin/skills/action-controller-best-practices/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/action-view-best-practices/SKILL.md +335 -0
- package/plugins/lisa-rails/.codex-plugin/skills/action-view-best-practices/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/active-record-model-best-practices/SKILL.md +166 -0
- package/plugins/lisa-rails/.codex-plugin/skills/active-record-model-best-practices/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/e2e-coverage-gaps/SKILL.md +105 -0
- package/plugins/lisa-rails/.codex-plugin/skills/e2e-coverage-gaps/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/fix-linter-error/SKILL.md +45 -0
- package/plugins/lisa-rails/.codex-plugin/skills/fix-linter-error/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-code-complexity/SKILL.md +48 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-code-complexity/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-max-lines/SKILL.md +46 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-max-lines/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-max-lines-per-function/SKILL.md +46 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-max-lines-per-function/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-test-coverage/SKILL.md +45 -0
- package/plugins/lisa-rails/.codex-plugin/skills/improve-test-coverage/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-add-journey/SKILL.md +65 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-add-journey/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-create/SKILL.md +100 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-create/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-evidence/SKILL.md +70 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-evidence/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-evidence/scripts/post-evidence.sh +180 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-journey/SKILL.md +64 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-journey/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-verify/SKILL.md +26 -0
- package/plugins/lisa-rails/.codex-plugin/skills/jira-verify/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/lisa-e2e-coverage-gaps/SKILL.md +13 -0
- package/plugins/lisa-rails/.codex-plugin/skills/lisa-e2e-coverage-gaps/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-check-logs/SKILL.md +191 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-check-logs/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-deploy/SKILL.md +153 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-deploy/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-run-local/SKILL.md +169 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-run-local/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-verify-jobs/SKILL.md +157 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-verify-jobs/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-verify-telemetry/SKILL.md +197 -0
- package/plugins/lisa-rails/.codex-plugin/skills/ops-verify-telemetry/agents/openai.yaml +4 -0
- package/plugins/lisa-rails/hooks/inject-rules.sh +2 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/hooks/inject-rules.sh +2 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-add-ingest/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-add-ingest/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-add-role/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-add-role/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-ingest/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-ingest/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-lint/SKILL.md +11 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-lint/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-migrate/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-migrate/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-onboard-me/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-onboard-me/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-query/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-query/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-setup/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-setup/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-setup-wiki/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-setup-wiki/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-status/SKILL.md +12 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-status/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-add-ingest/SKILL.md +34 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-add-ingest/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-add-role/SKILL.md +30 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-add-role/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-confluence/SKILL.md +25 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-confluence/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-docs/SKILL.md +30 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-docs/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-git/SKILL.md +25 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-git/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-jira/SKILL.md +28 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-jira/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-memory/SKILL.md +28 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-memory/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-notion/SKILL.md +25 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-notion/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-roles/SKILL.md +22 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-roles/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-slack/SKILL.md +30 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-slack/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-web/SKILL.md +23 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-connector-web/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-doctor/SKILL.md +47 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-doctor/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-ingest/SKILL.md +99 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-ingest/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-lint/SKILL.md +32 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-lint/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-migrate/SKILL.md +43 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-migrate/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-onboard-me/SKILL.md +33 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-onboard-me/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-query/SKILL.md +36 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-query/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-setup/SKILL.md +75 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-setup/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-setup-automations/SKILL.md +83 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-setup-automations/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-status/SKILL.md +47 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-status/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-tear-down-automations/SKILL.md +34 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-tear-down-automations/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-usage/SKILL.md +50 -0
- package/plugins/lisa-wiki/.codex-plugin/skills/lisa-wiki-usage/agents/openai.yaml +4 -0
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/hooks/inject-rules.sh +3 -2
- package/plugins/src/base/hooks/install-pkgs.sh +4 -45
- package/plugins/src/base/hooks/setup-jira-cli.sh +4 -12
- package/plugins/src/base/skills/lisa-setup-linear/SKILL.md +1 -1
- package/plugins/src/expo/.mcp.json +0 -4
- package/plugins/src/expo/THIRD-PARTY-NOTICES.md +14 -6
- package/plugins/src/expo/skills/building-native-ui/SKILL.md +1 -1
- package/plugins/src/harper-fabric/hooks/block-generated-artifact-edits.sh +42 -24
- package/plugins/src/harper-fabric/hooks/enforce-config-extensions.mjs +12 -14
- package/plugins/src/harper-fabric/hooks/enforce-config-extensions.sh +30 -3
- package/plugins/src/harper-fabric/hooks/inject-rules.sh +1 -1
- package/plugins/src/nestjs/skills/typeorm-patterns/references/configuration-patterns.md +5 -5
- package/plugins/src/phaser/hooks/inject-rules.sh +1 -1
- package/plugins/src/rails/hooks/inject-rules.sh +2 -1
- package/scripts/clean-dist.mjs +7 -0
- package/scripts/generate-codex-plugin-artifacts.mjs +311 -20
- package/scripts/install-claude-plugins.sh +53 -40
- package/typescript/package-lisa/package.lisa.json +1 -1
- package/.agents/plugins/marketplace.json +0 -128
- package/dist/codex/lisa-plugin-detection.d.ts +0 -68
- package/dist/codex/lisa-plugin-detection.d.ts.map +0 -1
- package/dist/codex/lisa-plugin-detection.js +0 -139
- package/dist/codex/lisa-plugin-detection.js.map +0 -1
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harper-operations
|
|
3
|
+
description: "operating, monitoring, or…"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Harper Operations
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Use Harper's Operations API when the app built or deployed but runtime behavior is
|
|
11
|
+
unknown: a REST endpoint returns 500, a component did not load, logs show worker
|
|
12
|
+
errors, a table shape differs from the expected schema, or a deploy job needs to be
|
|
13
|
+
checked. The Operations API is the administrative surface; application REST
|
|
14
|
+
endpoints are the user-facing data/resource surface.
|
|
15
|
+
|
|
16
|
+
Cross-check deploy packaging and Fabric topology in [[harper-build-and-deploy]].
|
|
17
|
+
Cross-check active extensions and config replacement behavior in
|
|
18
|
+
[[harper-config-yaml]]. Cross-check custom Resource method ownership in
|
|
19
|
+
[[harper-resources]] and query shape in [[harper-rest-queries]].
|
|
20
|
+
|
|
21
|
+
## Endpoint, auth, and request shape
|
|
22
|
+
|
|
23
|
+
Operations API requests are JSON `POST` requests to the operations endpoint. Harper
|
|
24
|
+
listens on port `9925` at the root path by default:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
curl -sS http://<harper-host>:9925/ \
|
|
28
|
+
-u "$HARPER_USERNAME:$HARPER_PASSWORD" \
|
|
29
|
+
-H 'Content-Type: application/json' \
|
|
30
|
+
--data '{"operation":"system_information"}'
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
For local development:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
curl -sS http://localhost:9925/ \
|
|
37
|
+
-u "$HARPER_USERNAME:$HARPER_PASSWORD" \
|
|
38
|
+
-H 'Content-Type: application/json' \
|
|
39
|
+
--data '{"operation":"get_components"}'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Authentication options:
|
|
43
|
+
|
|
44
|
+
- Basic auth: `Authorization: Basic ...`, or `curl -u "$USER:$PASS"`.
|
|
45
|
+
- JWT operation token: `Authorization: Bearer <token>` from
|
|
46
|
+
`create_authentication_tokens`.
|
|
47
|
+
- CLI: `harper login <target>` for persistent remote auth, or environment
|
|
48
|
+
credentials such as `HARPER_CLI_USERNAME` / `HARPER_CLI_PASSWORD`.
|
|
49
|
+
|
|
50
|
+
Most operational reads require a `super_user` or a role explicitly allowed to run
|
|
51
|
+
the named operation. If an operation is denied, check role `operations` permissions
|
|
52
|
+
before assuming the endpoint or component is broken.
|
|
53
|
+
|
|
54
|
+
## High-value operations
|
|
55
|
+
|
|
56
|
+
| Operation | Use it for | Example |
|
|
57
|
+
| --- | --- | --- |
|
|
58
|
+
| `get_components` | Confirm component names, files, and configuration loaded from `harper-config.yaml`. | `{"operation":"get_components"}` |
|
|
59
|
+
| `describe_all` | See all database/table definitions and record counts visible to the caller. | `{"operation":"describe_all"}` |
|
|
60
|
+
| `describe_table` | Confirm table/database names, attributes, and primary key shape. | `{"operation":"describe_table","database":"data","table":"Product"}` |
|
|
61
|
+
| `system_information` | Capture runtime, host, and process information for health/debug reports. | `{"operation":"system_information"}` |
|
|
62
|
+
| `read_log` | Read Harper's primary `hdb.log` with level/time/filter controls. | `{"operation":"read_log","level":"error","limit":50,"order":"desc"}` |
|
|
63
|
+
| `search_jobs_by_start_date` | Find background jobs when deploys, imports, or long operations are involved. | `{"operation":"search_jobs_by_start_date","from_date":"2026-06-16T00:00:00.000+0000","to_date":"2026-06-17T00:00:00.000+0000"}` |
|
|
64
|
+
| `get_job` | Inspect one known job id returned by a search or operation response. | `{"operation":"get_job","id":"<job-id>"}` |
|
|
65
|
+
| `get_configuration` | Find runtime paths such as `rootPath`, `componentsRoot`, ports, and logging config. | `{"operation":"get_configuration"}` |
|
|
66
|
+
|
|
67
|
+
Use CLI shortcuts when the operation only needs flat key/value arguments:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
harper get_components target="$HARPER_TARGET" json=true
|
|
71
|
+
harper describe_all target="$HARPER_TARGET" json=true
|
|
72
|
+
harper read_log target="$HARPER_TARGET" level=error limit=50 order=desc json=true
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
If the CLI cannot represent the nested request body, use `curl` against the
|
|
76
|
+
Operations API directly.
|
|
77
|
+
|
|
78
|
+
## Reading logs
|
|
79
|
+
|
|
80
|
+
`read_log` reads the primary Harper log (`hdb.log`) and is restricted to
|
|
81
|
+
`super_user` roles unless a custom role grants it. Useful parameters include
|
|
82
|
+
`level`, `from`, `until`, `limit`, `order`, and `filter`.
|
|
83
|
+
|
|
84
|
+
Recent errors:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
curl -sS "$HARPER_TARGET" \
|
|
88
|
+
-u "$HARPER_USERNAME:$HARPER_PASSWORD" \
|
|
89
|
+
-H 'Content-Type: application/json' \
|
|
90
|
+
--data '{
|
|
91
|
+
"operation": "read_log",
|
|
92
|
+
"level": "error",
|
|
93
|
+
"limit": 50,
|
|
94
|
+
"order": "desc"
|
|
95
|
+
}'
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Filter by component, route, or correlation id:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
curl -sS "$HARPER_TARGET" \
|
|
102
|
+
-u "$HARPER_USERNAME:$HARPER_PASSWORD" \
|
|
103
|
+
-H 'Content-Type: application/json' \
|
|
104
|
+
--data '{
|
|
105
|
+
"operation": "read_log",
|
|
106
|
+
"filter": "orders",
|
|
107
|
+
"from": "2026-06-16 00:00:00",
|
|
108
|
+
"limit": 100,
|
|
109
|
+
"order": "desc"
|
|
110
|
+
}'
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
In local `harper dev`, also watch the terminal output. The dev command restarts
|
|
114
|
+
worker threads on file changes and prints console/log output close to the failing
|
|
115
|
+
request. Use `harper run` or a deployed local instance when you need to restart the
|
|
116
|
+
main thread, not only workers.
|
|
117
|
+
|
|
118
|
+
## Logging from Resources
|
|
119
|
+
|
|
120
|
+
For Resource methods, log enough to identify the request path, authenticated user
|
|
121
|
+
or tenant id, and failing branch without emitting secrets or whole request bodies.
|
|
122
|
+
Prefer structured, searchable messages:
|
|
123
|
+
|
|
124
|
+
```javascript
|
|
125
|
+
export class Orders extends tables.Orders {
|
|
126
|
+
static async post(data, context) {
|
|
127
|
+
const input = await data;
|
|
128
|
+
console.info('orders.post received', {
|
|
129
|
+
orderId: input.id,
|
|
130
|
+
userId: context.user?.id,
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
try {
|
|
134
|
+
return await super.post(input, context);
|
|
135
|
+
} catch (error) {
|
|
136
|
+
console.error('orders.post failed', {
|
|
137
|
+
orderId: input.id,
|
|
138
|
+
message: error?.message,
|
|
139
|
+
});
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Guidance:
|
|
147
|
+
|
|
148
|
+
- Use `console.info` or `console.debug` for normal trace points, and
|
|
149
|
+
`console.warn` / `console.error` for actionable failures.
|
|
150
|
+
- Never log passwords, tokens, cookies, API keys, raw Authorization headers, or
|
|
151
|
+
full personal data payloads.
|
|
152
|
+
- Include a request id or deterministic entity id when the caller can provide one.
|
|
153
|
+
- Remove noisy temporary logs once the root cause is fixed, or lower them to debug.
|
|
154
|
+
|
|
155
|
+
## Debugging a 500 endpoint
|
|
156
|
+
|
|
157
|
+
When a deployed REST endpoint returns 500, follow this path before changing code:
|
|
158
|
+
|
|
159
|
+
1. Identify the exact endpoint, method, payload, authenticated user, target URL,
|
|
160
|
+
and timestamp. Save a reproducible `curl` command with headers scrubbed.
|
|
161
|
+
2. Confirm the component is installed and named as expected:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
harper get_components target="$HARPER_TARGET" json=true
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
3. Read recent errors around the failing timestamp:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
harper read_log target="$HARPER_TARGET" level=error limit=100 order=desc json=true
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
4. Check table/resource shape when the failure mentions a missing table, attribute,
|
|
174
|
+
index, relationship, or schema directive:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
curl -sS "$HARPER_TARGET" \
|
|
178
|
+
-u "$HARPER_USERNAME:$HARPER_PASSWORD" \
|
|
179
|
+
-H 'Content-Type: application/json' \
|
|
180
|
+
--data '{"operation":"describe_all"}'
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
5. Reproduce locally with the same built artifact path:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
bun run build
|
|
187
|
+
harper dev harper-app
|
|
188
|
+
curl -i http://localhost:9926/<project>/<resource-path>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
6. Isolate the smallest Resource method or table call involved. If the route uses a
|
|
192
|
+
custom Resource, call its underlying table/search operation directly when safe,
|
|
193
|
+
then add one temporary log at the branch boundary that chooses the failing path.
|
|
194
|
+
7. Fix source files, not generated deploy artifacts. Rebuild and repeat the same
|
|
195
|
+
local `curl`, then repeat the deployed smoke path after redeploy.
|
|
196
|
+
|
|
197
|
+
Treat the incident as unresolved until the same request path returns the expected
|
|
198
|
+
status and the logs no longer show the error.
|
|
199
|
+
|
|
200
|
+
## Health and deploy checks
|
|
201
|
+
|
|
202
|
+
After deploy or restart, check:
|
|
203
|
+
|
|
204
|
+
- Component inventory: `get_components` includes the expected project and files.
|
|
205
|
+
- System/runtime info: `system_information` returns from the target node.
|
|
206
|
+
- Configuration: `get_configuration` shows the expected operations/API ports,
|
|
207
|
+
`rootPath`, `componentsRoot`, and logging configuration.
|
|
208
|
+
- Schema/data shape: `describe_all` or `describe_table` matches the expected
|
|
209
|
+
database/table definitions and exported tables.
|
|
210
|
+
- Logs: `read_log` has no new error entries for the deploy/restart window.
|
|
211
|
+
- Jobs: `search_jobs_by_start_date` and `get_job` show background work completed
|
|
212
|
+
when deploy, import, backup, or long-running data operations were involved.
|
|
213
|
+
- Public smoke: the project-specific HTTP smoke command passes from the same route
|
|
214
|
+
users will hit. For Fabric, verify through the public route and any direct
|
|
215
|
+
node/region route the project exposes.
|
|
216
|
+
|
|
217
|
+
## What is not available
|
|
218
|
+
|
|
219
|
+
Do not invent observability that the target does not expose:
|
|
220
|
+
|
|
221
|
+
- If there is no Fabric credential or operations role, you cannot prove remote
|
|
222
|
+
component state; ask for credentials or a trusted operator readback.
|
|
223
|
+
- If the app does not emit a request id, logs may not be attributable to one HTTP
|
|
224
|
+
request. Reproduce in a narrow time window or add a safe correlation id first.
|
|
225
|
+
- If a Fabric project hides direct node/region URLs, verify through the public
|
|
226
|
+
route and record that node-level proof is unavailable.
|
|
227
|
+
- If Harper returns an auth/permission denial for `read_log`,
|
|
228
|
+
`system_information`, or component operations, treat it as an access blocker,
|
|
229
|
+
not as evidence that logs or components are empty.
|
|
230
|
+
- Third-party APM, trace collection, and performance tuning are outside this
|
|
231
|
+
skill. Capture Harper-native facts first, then escalate to the project's
|
|
232
|
+
runbook or platform owner.
|
|
233
|
+
|
|
234
|
+
## Sources
|
|
235
|
+
|
|
236
|
+
- [Operations API Overview](https://docs.harperdb.io/reference/v5/operations-api/overview)
|
|
237
|
+
- [Operations Reference](https://docs.harperdb.io/reference/v5/operations-api/operations)
|
|
238
|
+
- [Logging Operations](https://docs.harperdb.io/reference/v5/logging/operations)
|
|
239
|
+
- [Applications / Component Operations](https://docs.harperdb.io/reference/v5/components/applications)
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harper-realtime
|
|
3
|
+
description: "adding or troubleshooting…"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Harper Realtime
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Harper exposes live data through the same Resource model used for REST and
|
|
11
|
+
GraphQL. Exported tables/resources can be addressed as MQTT topics and WebSocket
|
|
12
|
+
paths, while custom resources can override the messaging handlers when the default
|
|
13
|
+
table behavior is not enough.
|
|
14
|
+
|
|
15
|
+
Use real-time primitives when the product needs pushed state: live feeds, activity
|
|
16
|
+
streams, collaborative views, device telemetry, or status updates. Do not replace
|
|
17
|
+
these with client polling unless the issue explicitly asks for polling.
|
|
18
|
+
|
|
19
|
+
## Resource and topic model
|
|
20
|
+
|
|
21
|
+
- A GraphQL type marked `@table @export` creates a default exported table resource.
|
|
22
|
+
- An exported JavaScript Resource class from `resources.js` creates a resource
|
|
23
|
+
endpoint with the class name as the path/topic root.
|
|
24
|
+
- Resource paths map naturally to subscription targets: collection-level
|
|
25
|
+
subscriptions use the resource name, and record-level subscriptions append the
|
|
26
|
+
record id or path segment.
|
|
27
|
+
- MQTT supports multi-level topics and wildcards. Use `resource/#` for a resource
|
|
28
|
+
subtree and `resource/+/status` for one path segment.
|
|
29
|
+
- WebSocket subscriptions target the REST resource URL. For example,
|
|
30
|
+
`ws://localhost:9926/Activity/123` subscribes to the `Activity` resource record
|
|
31
|
+
with id `123`.
|
|
32
|
+
|
|
33
|
+
Keep the URL/topic names stable. If a UI depends on `Activity/123`, changing the
|
|
34
|
+
resource export name is an API break.
|
|
35
|
+
|
|
36
|
+
## Resource methods
|
|
37
|
+
|
|
38
|
+
The MQTT plugin routes broker messages through Resource methods:
|
|
39
|
+
|
|
40
|
+
| Method | Use |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| `subscribe(target, context)` | Authorize and shape subscription reads for a resource or record. |
|
|
43
|
+
| `publish(target, message, context)` | Accept or transform messages written to a topic/resource. |
|
|
44
|
+
| `connect(incomingMessages)` | Customize WebSocket connection behavior for a resource. |
|
|
45
|
+
|
|
46
|
+
For table-backed resources, prefer default behavior until the product needs a
|
|
47
|
+
custom message shape, authorization check, fan-out, or derived event. When
|
|
48
|
+
overriding, preserve built-in table behavior with `super.subscribe(...)` or
|
|
49
|
+
`super.publish(...)` where that behavior is still wanted.
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
export class Activity extends tables.Activity {
|
|
53
|
+
static async publish(target, message, context) {
|
|
54
|
+
const payload = await message;
|
|
55
|
+
await super.publish(target, payload, context);
|
|
56
|
+
return { ...payload, acceptedAt: Date.now() };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
For WebSocket-only behavior, implement `connect(incomingMessages)` and return an
|
|
62
|
+
async iterable. Use the default `super.connect()` stream when you only need to
|
|
63
|
+
push extra server messages or clean up on disconnect.
|
|
64
|
+
|
|
65
|
+
## Transport choices
|
|
66
|
+
|
|
67
|
+
| Transport | Best fit | Notes |
|
|
68
|
+
| --- | --- | --- |
|
|
69
|
+
| MQTT | Device streams, backend subscribers, wildcard topics, durable clients. | Plain MQTT defaults to port `1883`; MQTTS defaults to `8883`. |
|
|
70
|
+
| MQTT over WebSocket | Browser or edge clients using MQTT semantics. | Uses the HTTP port, default `9926`, with the `mqtt` WebSocket subprotocol. |
|
|
71
|
+
| Resource WebSocket | Browser live views tied to one REST resource path. | Enabled with the `rest` plugin unless `rest.webSocket: false` is set. |
|
|
72
|
+
| SSE/custom streaming route | One-way browser updates when WebSocket is not appropriate. | Implement as a project route; do not assume SSE automatically subscribes to Resource changes. |
|
|
73
|
+
|
|
74
|
+
Authentication is usually required for MQTT. When `mqtt.requireAuthentication` is
|
|
75
|
+
`false`, authorization still applies at the resource/table level, so public
|
|
76
|
+
connections must be explicitly allowed by roles or resource logic.
|
|
77
|
+
|
|
78
|
+
## config.yaml wiring
|
|
79
|
+
|
|
80
|
+
Component-level `config.yaml` enables the app surface:
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
rest: true
|
|
84
|
+
graphqlSchema:
|
|
85
|
+
files: schema.graphql
|
|
86
|
+
jsResource:
|
|
87
|
+
files: resources.js
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The root Harper `harper-config.yaml`, not the component `config.yaml`, owns broker
|
|
91
|
+
ports and MQTT authentication:
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
mqtt:
|
|
95
|
+
network:
|
|
96
|
+
port: 1883
|
|
97
|
+
securePort: 8883
|
|
98
|
+
webSocket: true
|
|
99
|
+
requireAuthentication: true
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Keep the `rest`, `graphqlSchema`, and `jsResource` declarations together when a
|
|
103
|
+
project has a custom component `config.yaml`. Harper does not merge custom
|
|
104
|
+
component config with defaults. See [[harper-config-yaml]].
|
|
105
|
+
|
|
106
|
+
## Filtering and message shape
|
|
107
|
+
|
|
108
|
+
- Prefer record-level subscriptions (`Resource/<id>`) when the UI watches one
|
|
109
|
+
entity; use collection or wildcard subscriptions only when the product needs a
|
|
110
|
+
feed.
|
|
111
|
+
- Keep published messages typed and small. Send the changed record or a compact
|
|
112
|
+
event envelope, not a full page payload.
|
|
113
|
+
- Include stable identifiers in custom events: resource name, id, operation, and
|
|
114
|
+
timestamp are usually enough.
|
|
115
|
+
- Treat inaccessible or unauthenticated subscribe attempts as authorization
|
|
116
|
+
failures, not empty streams.
|
|
117
|
+
- Do not disable the audit log for tables that need real-time messages or
|
|
118
|
+
replication; Harper uses it for live subscriptions.
|
|
119
|
+
|
|
120
|
+
## Fabric and replication
|
|
121
|
+
|
|
122
|
+
For clustered/Fabric deployments, real-time behavior must match the deploy target:
|
|
123
|
+
|
|
124
|
+
- Verify against the same environment that users connect to, not only a local
|
|
125
|
+
single-node process.
|
|
126
|
+
- Use `replicated=true` when deploying a component that needs to run across Fabric
|
|
127
|
+
nodes. See [[harper-build-and-deploy]].
|
|
128
|
+
- Keep event handlers idempotent. A subscriber may reconnect and replay from the
|
|
129
|
+
latest known state.
|
|
130
|
+
- If a bug appears only across nodes, capture the target URL, topic/path, node
|
|
131
|
+
count when known, and the exact publish/subscribe commands in the evidence.
|
|
132
|
+
|
|
133
|
+
## Local verification
|
|
134
|
+
|
|
135
|
+
1. Build generated Harper assets from source:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
bun run build
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
2. Start the component:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
harper dev harper-app
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
3. In another shell, subscribe to a topic or WebSocket path:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npx mqtt sub -h localhost -p 1883 -u HDB_ADMIN -P "$HARPER_PASSWORD" -t 'Activity/#' -v
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
npx wscat -c ws://localhost:9926/Activity/123
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
4. Publish or mutate the watched record:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npx mqtt pub -h localhost -p 1883 -u HDB_ADMIN -P "$HARPER_PASSWORD" -t 'Activity/123' -m '{"status":"live"}'
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
5. Confirm the subscriber receives the expected message shape and that a normal
|
|
164
|
+
REST/GraphQL read returns the same resulting state.
|
|
165
|
+
|
|
166
|
+
Record the command, topic/path, payload, and observed message in PR evidence. If a
|
|
167
|
+
local Harper binary or credentials are unavailable, report that blocker instead of
|
|
168
|
+
claiming the subscription was verified.
|
|
169
|
+
|
|
170
|
+
## Project conventions
|
|
171
|
+
|
|
172
|
+
- Write resource code in TypeScript under `src/`; `harper-app/resources.js` is a
|
|
173
|
+
generated artifact. See [[harper-resources]].
|
|
174
|
+
- If real-time work changes `config.yaml`, update the project Fabric runbook and
|
|
175
|
+
re-run the smoke path. See [[harper-config-yaml]].
|
|
176
|
+
- Prefer a pushed update over a polling workaround when the issue asks for live
|
|
177
|
+
behavior.
|
|
178
|
+
- For Lisa plugin edits, change `plugins/src/harper-fabric`, run
|
|
179
|
+
`bun run build:plugins`, and commit both source and generated plugin copies.
|
|
180
|
+
|
|
181
|
+
## Sources
|
|
182
|
+
|
|
183
|
+
- [Resources overview](https://docs.harperdb.io/reference/v5/resources/overview)
|
|
184
|
+
- [Resource API](https://docs.harperdb.io/reference/v5/resources/resource-api)
|
|
185
|
+
- [WebSockets](https://docs.harperdb.io/reference/v5/rest/websockets)
|
|
186
|
+
- [MQTT configuration](https://docs.harperdb.io/reference/v4/mqtt/configuration)
|
|
187
|
+
- [Transaction logging](https://docs.harperdb.io/reference/v5/database/transaction)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harper-resources
|
|
3
|
+
description: "writing or editing Harper…"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Harper Resources
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
A **Resource** is a class that provides a unified interface for a set of records or
|
|
11
|
+
entities. Resources are how you add custom server-side behavior to a Harper app.
|
|
12
|
+
They are loaded by the `jsResource` extension (default file `resources.js`) and,
|
|
13
|
+
when **exported**, become live REST and GraphQL endpoints.
|
|
14
|
+
|
|
15
|
+
A resource either **extends a database table** (to customize an existing table's
|
|
16
|
+
behavior) or **extends the base `Resource` class** (to expose data from anywhere —
|
|
17
|
+
an external API, a computed view, an in-memory source).
|
|
18
|
+
|
|
19
|
+
## Method → HTTP verb mapping
|
|
20
|
+
|
|
21
|
+
The Resource API mirrors REST. Override the method matching the operation you want
|
|
22
|
+
to customize:
|
|
23
|
+
|
|
24
|
+
| Method | HTTP | Use |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| `get(target)` | GET | Retrieve a record/collection |
|
|
27
|
+
| `post(data)` | POST | Create |
|
|
28
|
+
| `put(target, data)` | PUT | Replace |
|
|
29
|
+
| `patch(target, data)` | PATCH | Partial update |
|
|
30
|
+
| `delete(target)` | DELETE | Remove |
|
|
31
|
+
| `search(query)` | GET (query) | Query with conditions |
|
|
32
|
+
| `subscribe` / `publish` | MQTT/WebSocket | Real-time |
|
|
33
|
+
|
|
34
|
+
## Extending a table
|
|
35
|
+
|
|
36
|
+
Add computed fields or guard logic while keeping the table's built-in behavior via
|
|
37
|
+
`super`:
|
|
38
|
+
|
|
39
|
+
```javascript
|
|
40
|
+
export class MyTable extends tables.MyTable {
|
|
41
|
+
static async get(target) {
|
|
42
|
+
const record = await super.get(target);
|
|
43
|
+
return { ...record, computedField: 'value' };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Wrapping an external source
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
export class MyExternalData extends Resource {
|
|
52
|
+
static async get(target) {
|
|
53
|
+
const response = await fetch(`https://api.example.com/${target.id}`);
|
|
54
|
+
return response.json();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Making a resource an endpoint
|
|
60
|
+
|
|
61
|
+
A resource becomes an endpoint when it is **exported** and `rest: true` (and/or
|
|
62
|
+
`graphqlSchema`) is enabled in `config.yaml`:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
rest: true
|
|
66
|
+
graphqlSchema:
|
|
67
|
+
files: schema.graphql
|
|
68
|
+
jsResource:
|
|
69
|
+
files: resources.js
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Resources can also be registered programmatically with `server.resources.set()`.
|
|
73
|
+
See [[harper-config-yaml]] for the extension wiring, [[harper-schema-graphql]] for
|
|
74
|
+
how the schema defines the tables resources extend, and [[harper-realtime]] when
|
|
75
|
+
`subscribe`, `publish`, or WebSocket behavior is part of the feature.
|
|
76
|
+
|
|
77
|
+
## Throwing HTTP status errors
|
|
78
|
+
|
|
79
|
+
Harper's thrown-error response writer reads **`error.statusCode`** (falling back
|
|
80
|
+
to `500`). A plain `error.status` is **ignored** — throw an error with only
|
|
81
|
+
`status` set and every intended `4xx` is served as a `500`. Verified on
|
|
82
|
+
harperdb 4.7.32.
|
|
83
|
+
|
|
84
|
+
Always set `statusCode` (keep `status` too only if callers or tests read it):
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
static async post(target, data, context) {
|
|
88
|
+
if (!context.user) {
|
|
89
|
+
const error = new Error('Authentication required');
|
|
90
|
+
error.statusCode = 401; // NOT `error.status` — Harper reads statusCode
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
// ...
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
A shared helper keeps every throw site correct:
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
function throwStatus(message, status) {
|
|
101
|
+
// Set both: `statusCode` is what Harper serves; `status` is kept for
|
|
102
|
+
// returned-response symmetry and any caller/test that reads it.
|
|
103
|
+
throw Object.assign(new Error(message), { status, statusCode: status });
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The `harper-require-statuscode-on-thrown-error` ast-grep rule flags errors that
|
|
108
|
+
carry `status` without `statusCode`. Pass `context` through to `super` and nested
|
|
109
|
+
table calls so authorization and the request transaction stay aligned — see
|
|
110
|
+
[[harper-rest-queries]] for context propagation and iterator draining.
|
|
111
|
+
|
|
112
|
+
## Project conventions (TS is source)
|
|
113
|
+
|
|
114
|
+
- **Write resources in TypeScript under `src/`. `harper-app/resources.js` is a
|
|
115
|
+
generated artifact** produced by `bun run build`. Never edit `resources.js` by
|
|
116
|
+
hand — change the TypeScript and rebuild. See [[harper-build-and-deploy]].
|
|
117
|
+
- Operational scripts that touch resources (seed, smoke, verify, ingest, crawl,
|
|
118
|
+
extraction) must run from compiled JavaScript or generated Harper assets, not
|
|
119
|
+
stale checked-in JS.
|
|
120
|
+
- Prefer immutable data flow: `readonly` types, pure transformations, copies, and
|
|
121
|
+
explicit returns. Do not mutate parameters, records, arrays, or config objects
|
|
122
|
+
unless an API forces it, and document the exception locally.
|
|
123
|
+
- Avoid `any`, broad casts, and `ts-ignore`. If an external API forces an escape
|
|
124
|
+
hatch, isolate it behind a typed adapter.
|
|
125
|
+
|
|
126
|
+
## Build the real thing
|
|
127
|
+
|
|
128
|
+
If an endpoint needs a schema change, a seed path, or a deploy script change, make
|
|
129
|
+
that change — do not ship a client-side workaround or silently downgrade to a stub
|
|
130
|
+
or mock. A change is unfinished until the local build and the relevant deployed or
|
|
131
|
+
smoke path agree.
|
|
132
|
+
|
|
133
|
+
## Verification
|
|
134
|
+
|
|
135
|
+
Run `bun run build`, `bun run typecheck`, and the smallest relevant test. For an
|
|
136
|
+
endpoint change, also hit the actual REST/GraphQL route against a local or deployed
|
|
137
|
+
Harper instance (the project smoke command) and confirm the response shape.
|
|
138
|
+
|
|
139
|
+
## Sources
|
|
140
|
+
|
|
141
|
+
- [Resources overview](https://docs.harperdb.io/reference/v5/resources/overview)
|
|
142
|
+
- [Applications](https://docs.harperdb.io/docs/developers/applications)
|