lastlight 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +265 -118
- package/agent-context/rules.md +62 -9
- package/agent-context/security.md +69 -0
- package/config/default.yaml +89 -0
- package/deploy/.env.production.example +20 -2
- package/deploy/entrypoint.sh +16 -17
- package/deploy/native/README.md +160 -0
- package/deploy/native/install.sh +110 -0
- package/deploy/native/lastlight.env.example +95 -0
- package/deploy/native/lastlight.service +50 -0
- package/deploy/sandbox-entrypoint.sh +59 -42
- package/dist/admin/auth.d.ts +1 -1
- package/dist/admin/auth.js +3 -1
- package/dist/admin/auth.js.map +1 -1
- package/dist/admin/chat-session-reader.d.ts +11 -14
- package/dist/admin/chat-session-reader.js +27 -51
- package/dist/admin/chat-session-reader.js.map +1 -1
- package/dist/admin/docker.d.ts +37 -0
- package/dist/admin/docker.js +86 -1
- package/dist/admin/docker.js.map +1 -1
- package/dist/admin/index.js +38 -3
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/log-search.test.d.ts +1 -0
- package/dist/admin/log-search.test.js +78 -0
- package/dist/admin/log-search.test.js.map +1 -0
- package/dist/admin/routes.d.ts +52 -3
- package/dist/admin/routes.js +780 -63
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/routes.test.js +680 -14
- package/dist/admin/routes.test.js.map +1 -1
- package/dist/admin/server-logs.test.d.ts +1 -0
- package/dist/admin/server-logs.test.js +58 -0
- package/dist/admin/server-logs.test.js.map +1 -0
- package/dist/admin/sessions.d.ts +26 -39
- package/dist/admin/sessions.js +86 -310
- package/dist/admin/sessions.js.map +1 -1
- package/dist/admin/sessions.test.d.ts +1 -0
- package/dist/admin/sessions.test.js +78 -0
- package/dist/admin/sessions.test.js.map +1 -0
- package/dist/admin/version.d.ts +15 -0
- package/dist/admin/version.js +73 -0
- package/dist/admin/version.js.map +1 -0
- package/dist/admin/version.test.d.ts +1 -0
- package/dist/admin/version.test.js +71 -0
- package/dist/admin/version.test.js.map +1 -0
- package/dist/cli-config.d.ts +55 -0
- package/dist/cli-config.js +119 -0
- package/dist/cli-config.js.map +1 -0
- package/dist/cli-config.test.d.ts +1 -0
- package/dist/cli-config.test.js +92 -0
- package/dist/cli-config.test.js.map +1 -0
- package/dist/cli-format.d.ts +19 -0
- package/dist/cli-format.js +107 -0
- package/dist/cli-format.js.map +1 -0
- package/dist/cli-server.d.ts +73 -0
- package/dist/cli-server.js +347 -0
- package/dist/cli-server.js.map +1 -0
- package/dist/cli-server.test.d.ts +1 -0
- package/dist/cli-server.test.js +38 -0
- package/dist/cli-server.test.js.map +1 -0
- package/dist/cli-timeline.d.ts +35 -0
- package/dist/cli-timeline.js +373 -0
- package/dist/cli-timeline.js.map +1 -0
- package/dist/cli-timeline.test.d.ts +1 -0
- package/dist/cli-timeline.test.js +104 -0
- package/dist/cli-timeline.test.js.map +1 -0
- package/dist/cli.d.ts +0 -19
- package/dist/cli.js +910 -194
- package/dist/cli.js.map +1 -1
- package/dist/config-overlay.test.d.ts +1 -0
- package/dist/config-overlay.test.js +112 -0
- package/dist/config-overlay.test.js.map +1 -0
- package/dist/config-resolve.d.ts +28 -0
- package/dist/config-resolve.js +47 -0
- package/dist/config-resolve.js.map +1 -0
- package/dist/config-resolve.test.d.ts +1 -0
- package/dist/config-resolve.test.js +68 -0
- package/dist/config-resolve.test.js.map +1 -0
- package/dist/config.d.ts +62 -49
- package/dist/config.js +452 -76
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +201 -32
- package/dist/config.test.js.map +1 -1
- package/dist/connectors/github-webhook.js +83 -5
- package/dist/connectors/github-webhook.js.map +1 -1
- package/dist/connectors/github-webhook.test.d.ts +1 -0
- package/dist/connectors/github-webhook.test.js +156 -0
- package/dist/connectors/github-webhook.test.js.map +1 -0
- package/dist/connectors/messaging/session-manager.d.ts +18 -0
- package/dist/connectors/messaging/session-manager.js +83 -2
- package/dist/connectors/messaging/session-manager.js.map +1 -1
- package/dist/connectors/messaging/session-manager.test.d.ts +1 -0
- package/dist/connectors/messaging/session-manager.test.js +144 -0
- package/dist/connectors/messaging/session-manager.test.js.map +1 -0
- package/dist/connectors/slack/connector.d.ts +9 -0
- package/dist/connectors/slack/connector.js +15 -0
- package/dist/connectors/slack/connector.js.map +1 -1
- package/dist/connectors/slack/mrkdwn.js +81 -0
- package/dist/connectors/slack/mrkdwn.js.map +1 -1
- package/dist/connectors/slack/mrkdwn.test.js +49 -0
- package/dist/connectors/slack/mrkdwn.test.js.map +1 -1
- package/dist/connectors/types.d.ts +1 -1
- package/dist/cron/fanout.d.ts +33 -0
- package/dist/cron/fanout.js +55 -0
- package/dist/cron/fanout.js.map +1 -0
- package/dist/cron/fanout.test.d.ts +1 -0
- package/dist/cron/fanout.test.js +73 -0
- package/dist/cron/fanout.test.js.map +1 -0
- package/dist/cron/jobs.d.ts +5 -0
- package/dist/cron/jobs.js +10 -3
- package/dist/cron/jobs.js.map +1 -1
- package/dist/cron/scheduler.d.ts +12 -0
- package/dist/cron/scheduler.js +27 -1
- package/dist/cron/scheduler.js.map +1 -1
- package/dist/engine/agent-executor.d.ts +158 -0
- package/dist/engine/agent-executor.js +1140 -0
- package/dist/engine/agent-executor.js.map +1 -0
- package/dist/engine/agent-executor.test.d.ts +1 -0
- package/dist/engine/agent-executor.test.js +395 -0
- package/dist/engine/agent-executor.test.js.map +1 -0
- package/dist/engine/chat-runner.d.ts +123 -0
- package/dist/engine/chat-runner.js +379 -0
- package/dist/engine/chat-runner.js.map +1 -0
- package/dist/engine/chat-runner.test.d.ts +1 -0
- package/dist/engine/chat-runner.test.js +104 -0
- package/dist/engine/chat-runner.test.js.map +1 -0
- package/dist/engine/chat-skills.d.ts +45 -0
- package/dist/engine/chat-skills.js +184 -0
- package/dist/engine/chat-skills.js.map +1 -0
- package/dist/engine/chat-skills.test.d.ts +1 -0
- package/dist/engine/chat-skills.test.js +20 -0
- package/dist/engine/chat-skills.test.js.map +1 -0
- package/dist/engine/chat.d.ts +20 -23
- package/dist/engine/chat.js +251 -155
- package/dist/engine/chat.js.map +1 -1
- package/dist/engine/chat.test.d.ts +1 -0
- package/dist/engine/chat.test.js +42 -0
- package/dist/engine/chat.test.js.map +1 -0
- package/dist/engine/classifier.d.ts +35 -2
- package/dist/engine/classifier.js +170 -31
- package/dist/engine/classifier.js.map +1 -1
- package/dist/engine/classifier.test.d.ts +1 -0
- package/dist/engine/classifier.test.js +115 -0
- package/dist/engine/classifier.test.js.map +1 -0
- package/dist/engine/dispatcher.d.ts +60 -0
- package/dist/engine/dispatcher.js +601 -0
- package/dist/engine/dispatcher.js.map +1 -0
- package/dist/engine/dispatcher.test.d.ts +1 -0
- package/dist/engine/dispatcher.test.js +511 -0
- package/dist/engine/dispatcher.test.js.map +1 -0
- package/dist/engine/event-shim.d.ts +117 -0
- package/dist/engine/event-shim.js +435 -0
- package/dist/engine/event-shim.js.map +1 -0
- package/dist/engine/event-shim.test.d.ts +1 -0
- package/dist/engine/event-shim.test.js +194 -0
- package/dist/engine/event-shim.test.js.map +1 -0
- package/dist/engine/git-auth.d.ts +13 -17
- package/dist/engine/git-auth.js +99 -42
- package/dist/engine/git-auth.js.map +1 -1
- package/dist/engine/git-auth.test.d.ts +1 -0
- package/dist/engine/git-auth.test.js +117 -0
- package/dist/engine/git-auth.test.js.map +1 -0
- package/dist/engine/github-app-client.d.ts +7 -0
- package/dist/engine/github-app-client.js +16 -0
- package/dist/engine/github-app-client.js.map +1 -0
- package/dist/engine/github-app-client.test.d.ts +1 -0
- package/dist/engine/github-app-client.test.js +44 -0
- package/dist/engine/github-app-client.test.js.map +1 -0
- package/dist/engine/github-tools.d.ts +12 -0
- package/dist/engine/github-tools.js +261 -0
- package/dist/engine/github-tools.js.map +1 -0
- package/dist/engine/github.d.ts +1027 -43
- package/dist/engine/github.js +153 -14
- package/dist/engine/github.js.map +1 -1
- package/dist/engine/llm.d.ts +47 -0
- package/dist/engine/llm.js +221 -0
- package/dist/engine/llm.js.map +1 -0
- package/dist/engine/llm.test.d.ts +1 -0
- package/dist/engine/llm.test.js +189 -0
- package/dist/engine/llm.test.js.map +1 -0
- package/dist/engine/profiles.d.ts +249 -0
- package/dist/engine/profiles.js +42 -0
- package/dist/engine/profiles.js.map +1 -0
- package/dist/engine/router.d.ts +12 -6
- package/dist/engine/router.js +339 -81
- package/dist/engine/router.js.map +1 -1
- package/dist/engine/router.test.js +428 -78
- package/dist/engine/router.test.js.map +1 -1
- package/dist/engine/screen.d.ts +41 -0
- package/dist/engine/screen.js +93 -0
- package/dist/engine/screen.js.map +1 -0
- package/dist/engine/screen.test.d.ts +1 -0
- package/dist/engine/screen.test.js +82 -0
- package/dist/engine/screen.test.js.map +1 -0
- package/dist/index.js +423 -437
- package/dist/index.js.map +1 -1
- package/dist/managed-repos.d.ts +7 -9
- package/dist/managed-repos.js +12 -15
- package/dist/managed-repos.js.map +1 -1
- package/dist/managed-repos.test.js +24 -19
- package/dist/managed-repos.test.js.map +1 -1
- package/dist/notify/index.d.ts +15 -0
- package/dist/notify/index.js +6 -0
- package/dist/notify/index.js.map +1 -0
- package/dist/notify/model.d.ts +57 -0
- package/dist/notify/model.js +89 -0
- package/dist/notify/model.js.map +1 -0
- package/dist/notify/model.test.d.ts +1 -0
- package/dist/notify/model.test.js +109 -0
- package/dist/notify/model.test.js.map +1 -0
- package/dist/notify/notifier.d.ts +17 -0
- package/dist/notify/notifier.js +87 -0
- package/dist/notify/notifier.js.map +1 -0
- package/dist/notify/notifier.test.d.ts +1 -0
- package/dist/notify/notifier.test.js +100 -0
- package/dist/notify/notifier.test.js.map +1 -0
- package/dist/notify/render.d.ts +21 -0
- package/dist/notify/render.js +59 -0
- package/dist/notify/render.js.map +1 -0
- package/dist/notify/render.test.d.ts +1 -0
- package/dist/notify/render.test.js +65 -0
- package/dist/notify/render.test.js.map +1 -0
- package/dist/notify/transports/github.d.ts +26 -0
- package/dist/notify/transports/github.js +26 -0
- package/dist/notify/transports/github.js.map +1 -0
- package/dist/notify/transports/slack.d.ts +26 -0
- package/dist/notify/transports/slack.js +28 -0
- package/dist/notify/transports/slack.js.map +1 -0
- package/dist/notify/transports.test.d.ts +1 -0
- package/dist/notify/transports.test.js +71 -0
- package/dist/notify/transports.test.js.map +1 -0
- package/dist/notify/types.d.ts +95 -0
- package/dist/notify/types.js +16 -0
- package/dist/notify/types.js.map +1 -0
- package/dist/sandbox/docker-compose.test.d.ts +1 -0
- package/dist/sandbox/docker-compose.test.js +128 -0
- package/dist/sandbox/docker-compose.test.js.map +1 -0
- package/dist/sandbox/docker.d.ts +97 -9
- package/dist/sandbox/docker.js +192 -41
- package/dist/sandbox/docker.js.map +1 -1
- package/dist/sandbox/docker.test.d.ts +1 -0
- package/dist/sandbox/docker.test.js +137 -0
- package/dist/sandbox/docker.test.js.map +1 -0
- package/dist/sandbox/egress-allowlist.d.ts +69 -0
- package/dist/sandbox/egress-allowlist.js +164 -0
- package/dist/sandbox/egress-allowlist.js.map +1 -0
- package/dist/sandbox/egress-allowlist.test.d.ts +1 -0
- package/dist/sandbox/egress-allowlist.test.js +65 -0
- package/dist/sandbox/egress-allowlist.test.js.map +1 -0
- package/dist/sandbox/egress-firewall-config.d.ts +127 -0
- package/dist/sandbox/egress-firewall-config.js +434 -0
- package/dist/sandbox/egress-firewall-config.js.map +1 -0
- package/dist/sandbox/egress-firewall-config.test.d.ts +1 -0
- package/dist/sandbox/egress-firewall-config.test.js +244 -0
- package/dist/sandbox/egress-firewall-config.test.js.map +1 -0
- package/dist/sandbox/images.d.ts +23 -0
- package/dist/sandbox/images.js +55 -0
- package/dist/sandbox/images.js.map +1 -0
- package/dist/sandbox/index.d.ts +82 -3
- package/dist/sandbox/index.js +223 -93
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/index.test.d.ts +1 -0
- package/dist/sandbox/index.test.js +157 -0
- package/dist/sandbox/index.test.js.map +1 -0
- package/dist/session-log.d.ts +63 -0
- package/dist/session-log.js +290 -0
- package/dist/session-log.js.map +1 -0
- package/dist/session-log.test.d.ts +1 -0
- package/dist/session-log.test.js +85 -0
- package/dist/session-log.test.js.map +1 -0
- package/dist/setup.d.ts +31 -12
- package/dist/setup.js +516 -174
- package/dist/setup.js.map +1 -1
- package/dist/setup.test.js +138 -6
- package/dist/setup.test.js.map +1 -1
- package/dist/state/approval-store.d.ts +86 -0
- package/dist/state/approval-store.js +140 -0
- package/dist/state/approval-store.js.map +1 -0
- package/dist/state/build-assets.d.ts +50 -0
- package/dist/state/build-assets.js +154 -0
- package/dist/state/build-assets.js.map +1 -0
- package/dist/state/build-assets.test.d.ts +1 -0
- package/dist/state/build-assets.test.js +106 -0
- package/dist/state/build-assets.test.js.map +1 -0
- package/dist/state/db.d.ts +65 -333
- package/dist/state/db.js +112 -835
- package/dist/state/db.js.map +1 -1
- package/dist/state/db.test.js +127 -91
- package/dist/state/db.test.js.map +1 -1
- package/dist/state/execution-store.d.ts +257 -0
- package/dist/state/execution-store.js +527 -0
- package/dist/state/execution-store.js.map +1 -0
- package/dist/state/migrate.d.ts +15 -0
- package/dist/state/migrate.js +175 -0
- package/dist/state/migrate.js.map +1 -0
- package/dist/state/workflow-run-store.d.ts +195 -0
- package/dist/state/workflow-run-store.js +363 -0
- package/dist/state/workflow-run-store.js.map +1 -0
- package/dist/state/workflow-run-store.test.d.ts +1 -0
- package/dist/state/workflow-run-store.test.js +264 -0
- package/dist/state/workflow-run-store.test.js.map +1 -0
- package/dist/telemetry/index.d.ts +38 -0
- package/dist/telemetry/index.js +253 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/index.test.d.ts +1 -0
- package/dist/telemetry/index.test.js +73 -0
- package/dist/telemetry/index.test.js.map +1 -0
- package/dist/telemetry/pi-events.d.ts +12 -0
- package/dist/telemetry/pi-events.js +134 -0
- package/dist/telemetry/pi-events.js.map +1 -0
- package/dist/telemetry/pi-events.test.d.ts +1 -0
- package/dist/telemetry/pi-events.test.js +69 -0
- package/dist/telemetry/pi-events.test.js.map +1 -0
- package/dist/workflows/dag.d.ts +13 -1
- package/dist/workflows/dag.js +7 -3
- package/dist/workflows/dag.js.map +1 -1
- package/dist/workflows/dag.test.js +22 -0
- package/dist/workflows/dag.test.js.map +1 -1
- package/dist/workflows/golden-build.test.d.ts +1 -0
- package/dist/workflows/golden-build.test.js +45 -0
- package/dist/workflows/golden-build.test.js.map +1 -0
- package/dist/workflows/loader-overlay.test.d.ts +1 -0
- package/dist/workflows/loader-overlay.test.js +101 -0
- package/dist/workflows/loader-overlay.test.js.map +1 -0
- package/dist/workflows/loader.d.ts +36 -11
- package/dist/workflows/loader.js +311 -87
- package/dist/workflows/loader.js.map +1 -1
- package/dist/workflows/loader.test.js +114 -10
- package/dist/workflows/loader.test.js.map +1 -1
- package/dist/workflows/loop-eval.js +2 -0
- package/dist/workflows/loop-eval.js.map +1 -1
- package/dist/workflows/loop-eval.test.js +14 -0
- package/dist/workflows/loop-eval.test.js.map +1 -1
- package/dist/workflows/phase-executor.d.ts +145 -0
- package/dist/workflows/phase-executor.js +691 -0
- package/dist/workflows/phase-executor.js.map +1 -0
- package/dist/workflows/phase-executor.test.d.ts +1 -0
- package/dist/workflows/phase-executor.test.js +434 -0
- package/dist/workflows/phase-executor.test.js.map +1 -0
- package/dist/workflows/phase-ref.d.ts +44 -0
- package/dist/workflows/phase-ref.js +78 -0
- package/dist/workflows/phase-ref.js.map +1 -0
- package/dist/workflows/phase-ref.test.d.ts +1 -0
- package/dist/workflows/phase-ref.test.js +24 -0
- package/dist/workflows/phase-ref.test.js.map +1 -0
- package/dist/workflows/resume.d.ts +5 -11
- package/dist/workflows/resume.js +88 -7
- package/dist/workflows/resume.js.map +1 -1
- package/dist/workflows/runner.d.ts +34 -27
- package/dist/workflows/runner.js +252 -930
- package/dist/workflows/runner.js.map +1 -1
- package/dist/workflows/runner.test.js +346 -35
- package/dist/workflows/runner.test.js.map +1 -1
- package/dist/workflows/schema.d.ts +52 -10
- package/dist/workflows/schema.js +147 -7
- package/dist/workflows/schema.js.map +1 -1
- package/dist/workflows/simple.d.ts +67 -3
- package/dist/workflows/simple.js +248 -87
- package/dist/workflows/simple.js.map +1 -1
- package/dist/workflows/simple.test.d.ts +1 -0
- package/dist/workflows/simple.test.js +107 -0
- package/dist/workflows/simple.test.js.map +1 -0
- package/dist/workflows/templates.d.ts +29 -0
- package/dist/workflows/templates.js +42 -4
- package/dist/workflows/templates.js.map +1 -1
- package/dist/workflows/templates.test.js +103 -0
- package/dist/workflows/templates.test.js.map +1 -1
- package/dist/workflows/triggers.d.ts +21 -0
- package/dist/workflows/triggers.js +44 -0
- package/dist/workflows/triggers.js.map +1 -0
- package/dist/workflows/verdict.d.ts +19 -0
- package/dist/workflows/verdict.js +30 -0
- package/dist/workflows/verdict.js.map +1 -0
- package/dist/workflows/verdict.test.d.ts +1 -0
- package/dist/workflows/verdict.test.js +44 -0
- package/dist/workflows/verdict.test.js.map +1 -0
- package/dist/worktree/manager.d.ts +1 -1
- package/dist/worktree/manager.js +14 -14
- package/dist/worktree/manager.js.map +1 -1
- package/dist/worktree/manager.test.d.ts +1 -0
- package/dist/worktree/manager.test.js +87 -0
- package/dist/worktree/manager.test.js.map +1 -0
- package/docker-compose.yml +206 -5
- package/package.json +19 -7
- package/sandbox.Dockerfile +97 -18
- package/skills/README.md +40 -0
- package/skills/browser-qa/SKILL.md +193 -0
- package/skills/browser-qa/scripts/agent-browser.mjs +380 -0
- package/skills/building/SKILL.md +95 -0
- package/skills/chat/SKILL.md +30 -11
- package/skills/code-review/SKILL.md +59 -0
- package/skills/debug-production/SKILL.md +108 -0
- package/skills/demo/SKILL.md +194 -0
- package/skills/demo/scripts/compose-demo.sh +205 -0
- package/skills/issue-answer/SKILL.md +90 -0
- package/skills/issue-comment/SKILL.md +38 -24
- package/skills/issue-triage/SKILL.md +103 -37
- package/skills/issue-triage/references/AGENT-BRIEF.md +61 -0
- package/skills/pr-comment/SKILL.md +64 -0
- package/skills/pr-review/SKILL.md +65 -49
- package/skills/qa-test/SKILL.md +97 -0
- package/skills/repo-health/SKILL.md +48 -45
- package/skills/security-feedback/SKILL.md +173 -0
- package/skills/security-feedback/references/templates.md +77 -0
- package/skills/security-review/SKILL.md +213 -0
- package/skills/security-review/references/issue-format.md +302 -0
- package/skills/verify/SKILL.md +118 -0
- package/workflows/answer.yaml +37 -0
- package/workflows/build.yaml +32 -22
- package/workflows/cron-security.yaml +6 -0
- package/workflows/demo.yaml +55 -0
- package/workflows/explore.yaml +9 -0
- package/workflows/pr-comment.yaml +16 -0
- package/workflows/pr-fix.yaml +3 -0
- package/workflows/pr-review.yaml +4 -1
- package/workflows/prompts/answer.md +67 -0
- package/workflows/prompts/architect.md +24 -7
- package/workflows/prompts/demo.md +100 -0
- package/workflows/prompts/executor.md +29 -20
- package/workflows/prompts/explore-ask.md +51 -22
- package/workflows/prompts/explore-publish.md +2 -2
- package/workflows/prompts/explore-read.md +24 -10
- package/workflows/prompts/explore-synthesize.md +15 -8
- package/workflows/prompts/fix.md +9 -10
- package/workflows/prompts/guardrails.md +26 -8
- package/workflows/prompts/pr-fix.md +6 -7
- package/workflows/prompts/pr.md +11 -10
- package/workflows/prompts/qa-browser.md +95 -0
- package/workflows/prompts/qa-synth.md +44 -0
- package/workflows/prompts/qa-test.md +60 -0
- package/workflows/prompts/re-reviewer.md +8 -9
- package/workflows/prompts/reviewer.md +10 -9
- package/workflows/prompts/verify-browser.md +93 -0
- package/workflows/prompts/verify-synth.md +44 -0
- package/workflows/prompts/verify.md +63 -0
- package/workflows/qa-test.yaml +87 -0
- package/workflows/security-feedback.yaml +25 -0
- package/workflows/security-review.yaml +29 -0
- package/workflows/verify.yaml +85 -0
- package/deploy/mcp-config.tmpl.json +0 -14
- package/dist/cron/rate-limits.d.ts +0 -26
- package/dist/cron/rate-limits.js +0 -193
- package/dist/cron/rate-limits.js.map +0 -1
- package/dist/engine/executor.d.ts +0 -75
- package/dist/engine/executor.js +0 -292
- package/dist/engine/executor.js.map +0 -1
- package/mcp-github-app/package.json +0 -18
- package/mcp-github-app/src/auth.js +0 -66
- package/mcp-github-app/src/github.js +0 -371
- package/mcp-github-app/src/index.js +0 -534
- package/skills/devops/webhook-subscriptions/SKILL.md +0 -180
- package/skills/github/DESCRIPTION.md +0 -3
- package/skills/github/codebase-inspection/SKILL.md +0 -115
- package/skills/github/github-auth/SKILL.md +0 -54
- package/skills/github/github-auth/scripts/gh-env.sh +0 -66
- package/skills/github/github-code-review/SKILL.md +0 -480
- package/skills/github/github-code-review/references/review-output-template.md +0 -74
- package/skills/github/github-issues/SKILL.md +0 -369
- package/skills/github/github-issues/templates/bug-report.md +0 -35
- package/skills/github/github-issues/templates/feature-request.md +0 -31
- package/skills/github/github-pr-workflow/SKILL.md +0 -395
- package/skills/github/github-pr-workflow/references/ci-troubleshooting.md +0 -183
- package/skills/github/github-pr-workflow/references/conventional-commits.md +0 -71
- package/skills/github/github-pr-workflow/templates/pr-body-bugfix.md +0 -35
- package/skills/github/github-pr-workflow/templates/pr-body-feature.md +0 -33
- package/skills/github/github-repo-management/SKILL.md +0 -515
- package/skills/github/github-repo-management/references/github-api-cheatsheet.md +0 -161
- package/skills/github-orchestrator/SKILL.md +0 -103
- package/skills/mcp/DESCRIPTION.md +0 -3
- package/skills/mcp/mcporter/SKILL.md +0 -122
- package/skills/mcp/native-mcp/SKILL.md +0 -356
- package/skills/software-development/architect/SKILL.md +0 -154
- package/skills/software-development/assure-guardrails/SKILL.md +0 -239
- package/skills/software-development/plan/SKILL.md +0 -64
- package/skills/software-development/requesting-code-review/SKILL.md +0 -291
- package/skills/software-development/subagent-driven-development/SKILL.md +0 -433
- package/skills/software-development/systematic-debugging/SKILL.md +0 -366
- package/skills/software-development/test-driven-development/SKILL.md +0 -342
|
@@ -3,14 +3,14 @@ You are publishing an approved spec that the previous phase wrote to
|
|
|
3
3
|
|
|
4
4
|
## Your task
|
|
5
5
|
|
|
6
|
-
1. Read the spec file at
|
|
6
|
+
1. Read the spec file at `{{issueDir}}/explore-spec.md` (relative to the cwd).
|
|
7
7
|
2. Decide the destination based on where this explore was triggered from:
|
|
8
8
|
|
|
9
9
|
### GitHub-originated (triggered by a comment on an existing issue)
|
|
10
10
|
|
|
11
11
|
If `{{issueNumber}}` is set and non-zero (and not a Slack-originated run),
|
|
12
12
|
post the spec as a **comment on issue #{{issueNumber}}** in
|
|
13
|
-
`{{owner}}/{{repo}}` using the
|
|
13
|
+
`{{owner}}/{{repo}}` using the `github_add_issue_comment` MCP tool.
|
|
14
14
|
|
|
15
15
|
### Slack-originated (triggered in a Slack thread)
|
|
16
16
|
|
|
@@ -3,16 +3,27 @@ any clarifying questions, you need to clone the target repo, explore the
|
|
|
3
3
|
relevant code, and write a detailed context document that all subsequent
|
|
4
4
|
phases will reference.
|
|
5
5
|
|
|
6
|
-
## Step 1 —
|
|
6
|
+
## Step 1 — Prepare the workspace
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
The repo lives (or will live) in a `{{repo}}/` subdirectory under your
|
|
9
|
+
cwd. Check first:
|
|
9
10
|
|
|
10
11
|
```
|
|
11
|
-
|
|
12
|
+
ls -la
|
|
12
13
|
```
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
- If you see `{{repo}}/.git/` already, the harness pre-cloned it.
|
|
16
|
+
`cd {{repo}}` and continue.
|
|
17
|
+
- Otherwise clone it into a `{{repo}}/` subdirectory and cd in:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
git clone https://github.com/{{owner}}/{{repo}}.git {{repo}}
|
|
21
|
+
cd {{repo}}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Git credentials are already configured.
|
|
25
|
+
|
|
26
|
+
All subsequent file paths in this prompt are relative to the cwd.
|
|
16
27
|
|
|
17
28
|
{{#if issueNumber}}
|
|
18
29
|
## Step 2 — Read the issue
|
|
@@ -52,15 +63,18 @@ understand everything relevant to the idea. Look at:
|
|
|
52
63
|
|
|
53
64
|
## Step 4 — Write the context document
|
|
54
65
|
|
|
55
|
-
First create the
|
|
66
|
+
First create the scratch directory at the WORKSPACE root (alongside
|
|
67
|
+
`{{repo}}/`, not inside it):
|
|
56
68
|
|
|
57
69
|
```
|
|
58
|
-
mkdir -p
|
|
70
|
+
mkdir -p ../{{issueDir}} # if you're inside the {{repo}}/ subdir
|
|
71
|
+
# OR, if you cd'd back out:
|
|
72
|
+
mkdir -p {{issueDir}}
|
|
59
73
|
```
|
|
60
74
|
|
|
61
|
-
Then write a detailed context file to
|
|
62
|
-
|
|
63
|
-
|
|
75
|
+
Then write a detailed context file to **`{{issueDir}}/explore-context.md`**
|
|
76
|
+
relative to the workspace root (i.e. `../{{issueDir}}/explore-context.md`
|
|
77
|
+
when you're inside the repo subdir). This file is the primary reference for
|
|
64
78
|
all subsequent phases — they should rarely need to re-explore the codebase.
|
|
65
79
|
|
|
66
80
|
Structure it as:
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
You are writing the detailed spec for an idea that's been shaped through a
|
|
2
2
|
socratic Q&A loop with a maintainer.
|
|
3
3
|
|
|
4
|
-
The **{{owner}}/{{repo}}** repo is
|
|
4
|
+
The **{{owner}}/{{repo}}** repo is checked out at `{{repo}}/` (a
|
|
5
|
+
subdirectory of your cwd).
|
|
5
6
|
|
|
6
|
-
**Important paths** (
|
|
7
|
-
- Repo root:
|
|
8
|
-
- Context doc:
|
|
9
|
-
- Spec output:
|
|
7
|
+
**Important paths** (relative to the workspace cwd):
|
|
8
|
+
- Repo root: `{{repo}}/` (cd into it to use git)
|
|
9
|
+
- Context doc: `{{issueDir}}/explore-context.md`
|
|
10
|
+
- Spec output: `{{issueDir}}/explore-spec.md`
|
|
10
11
|
|
|
11
12
|
Start by reading the context doc — it contains the architecture, key code
|
|
12
13
|
excerpts, and existing patterns captured during the initial read and
|
|
@@ -28,8 +29,7 @@ context doc doesn't cover what you need.
|
|
|
28
29
|
Read the relevant parts of the codebase to ground the spec in reality.
|
|
29
30
|
Then produce a detailed spec document. The structure below is the target —
|
|
30
31
|
hit every heading, even if a section is "none" or "to be decided". Write it
|
|
31
|
-
to
|
|
32
|
-
Write tool.
|
|
32
|
+
to `{{issueDir}}/explore-spec.md` using the Write tool.
|
|
33
33
|
|
|
34
34
|
```
|
|
35
35
|
# <short title summarizing the idea>
|
|
@@ -57,6 +57,13 @@ patterns from the codebase. Break into subsections if useful.>
|
|
|
57
57
|
|------|--------|
|
|
58
58
|
| path/to/file | what changes |
|
|
59
59
|
|
|
60
|
+
## Decisions made during exploration
|
|
61
|
+
<Low-stakes decisions the agent resolved itself during the Q&A loop rather
|
|
62
|
+
than asking — pull these from the `## Decisions made during exploration`
|
|
63
|
+
section of the context doc. Format as `<decision> → <choice> (<why>)`. The
|
|
64
|
+
maintainer can override any of these. Omit the heading only if there were
|
|
65
|
+
none.>
|
|
66
|
+
|
|
60
67
|
## Acceptance criteria
|
|
61
68
|
- <observable outcome 1>
|
|
62
69
|
- <observable outcome 2>
|
|
@@ -70,7 +77,7 @@ patterns from the codebase. Break into subsections if useful.>
|
|
|
70
77
|
|
|
71
78
|
## Rules
|
|
72
79
|
|
|
73
|
-
- Write the file to
|
|
80
|
+
- Write the file to `{{issueDir}}/explore-spec.md`
|
|
74
81
|
— don't inline it in your reply.
|
|
75
82
|
- Reference actual code paths from the repo, not hypothetical ones.
|
|
76
83
|
- After writing the file, output a short summary (3-6 lines) saying what
|
package/workflows/prompts/fix.md
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
You are the EXECUTOR (fix cycle {{fixCycle}}). Fix ONLY the issues reported by the reviewer.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
2. Read {{issueDir}}/reviewer-verdict.md — fix ONLY these issues
|
|
6
|
-
3. Read {{issueDir}}/guardrails-report.md for the test/lint/typecheck commands
|
|
3
|
+
You are already inside the {{repo}} repo at branch {{branch}} — the harness
|
|
4
|
+
pre-cloned it and your cwd is the repo root. Git is configured.
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
3. Run the typecheck command (if present) and fix ALL type errors
|
|
12
|
-
DO NOT commit until tests, lint, and typecheck all pass.
|
|
6
|
+
Start by reading {{issueDir}}/reviewer-verdict.md — fix ONLY those issues. The
|
|
7
|
+
test/lint/typecheck commands are in {{issueDir}}/guardrails-report.md (and the
|
|
8
|
+
architect plan).
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
Follow the **building** skill: run the full test/lint/typecheck gate once before
|
|
11
|
+
committing — all of it must pass before you commit.
|
|
12
|
+
|
|
13
|
+
AFTER THE GATE PASSES:
|
|
15
14
|
1. APPEND to {{issueDir}}/executor-summary.md under heading "## Fix Cycle {{fixCycle}}" (what was fixed, test/lint/typecheck results)
|
|
16
15
|
2. Update status.md: current_phase = fix_loop_{{fixCycle}}
|
|
17
16
|
3. git add -A && git commit -m "fix: address review feedback for #{{issueNumber}} (cycle {{fixCycle}})" && git push origin HEAD
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
You are running a PRE-FLIGHT GUARDRAILS CHECK before implementation work begins.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
You are already inside the {{repo}} repo at branch {{branch}} — the harness
|
|
4
|
+
pre-cloned it and your cwd is the repo root. Read CLAUDE.md (and
|
|
5
|
+
CONTRIBUTING.md if present) for project-specific guidance.
|
|
6
|
+
|
|
7
|
+
THE ISSUE THIS BUILD WILL IMPLEMENT (use it to judge the escape hatch below):
|
|
8
|
+
{{contextSnapshot}}
|
|
7
9
|
|
|
8
10
|
SKIP CHECK — if {{issueDir}}/status.md already exists and contains
|
|
9
11
|
guardrails_status: READY, output "READY — guardrails already verified" and stop.
|
|
@@ -25,16 +27,32 @@ AFTER CHECKING:
|
|
|
25
27
|
1. mkdir -p {{issueDir}}
|
|
26
28
|
2. Write {{issueDir}}/guardrails-report.md with the status of each check
|
|
27
29
|
3. Write {{issueDir}}/status.md with current_phase: guardrails AND guardrails_status: READY or BLOCKED
|
|
28
|
-
4. git add .lastlight/ && git commit -m "docs: guardrails check for #{{issueNumber}}"
|
|
29
|
-
5. git push -u origin HEAD
|
|
30
|
+
{{#if !externalizeArtifacts}}4. git add .lastlight/ && git commit -m "docs: guardrails check for #{{issueNumber}}"
|
|
31
|
+
5. git push -u origin HEAD{{/if}}{{#if externalizeArtifacts}}4. Do NOT git add or commit {{issueDir}}/ — the harness persists it to the Last Light server automatically.{{/if}}
|
|
32
|
+
|
|
33
|
+
ESCAPE HATCH — bootstrap tasks (CHECK THIS FIRST):
|
|
34
|
+
If THE ISSUE ABOVE is itself asking to ADD the tooling you're checking for —
|
|
35
|
+
set up tests / a test harness, linting, type-checking, CI, an AGENTS.md, etc. —
|
|
36
|
+
then missing tooling is the expected STARTING state, not a blocker. The whole
|
|
37
|
+
point of the build is to create it. In that case:
|
|
38
|
+
- Do NOT output BLOCKED, and do NOT create a separate guardrails issue.
|
|
39
|
+
- In guardrails-report.md, mark this a BOOTSTRAP build: list what's missing and
|
|
40
|
+
state that the executor must ESTABLISH this tooling as the task — there are no
|
|
41
|
+
existing test/lint/typecheck commands to rely on yet.
|
|
42
|
+
- Write guardrails_status: READY and OUTPUT: READY so the build proceeds to the
|
|
43
|
+
architect.
|
|
44
|
+
This applies even when there is no `lastlight:bootstrap` label and the title has
|
|
45
|
+
no `guardrails:` prefix — judge it from the issue's intent.
|
|
46
|
+
|
|
47
|
+
Otherwise (the issue is normal feature/bug work, not about adding tooling):
|
|
30
48
|
|
|
31
49
|
IF ANY BLOCKING GUARDRAIL IS MISSING (no test framework at all, or tests completely broken):
|
|
32
|
-
- Use the MCP tool
|
|
50
|
+
- Use the MCP tool github_create_issue to create a guardrails issue in the repo with:
|
|
33
51
|
- title prefixed exactly with "guardrails:" (e.g. "guardrails: no test framework configured")
|
|
34
52
|
- labels including {{bootstrapLabel}} so subsequent build attempts on this issue
|
|
35
53
|
can detect that the task IS to set up guardrails (the orchestrator will then
|
|
36
54
|
skip the BLOCKED gate and let the executor install the missing tooling).
|
|
37
|
-
- Use
|
|
55
|
+
- Use github_add_issue_comment on issue #{{issueNumber}} to link the guardrails issue
|
|
38
56
|
- OUTPUT must include: BLOCKED
|
|
39
57
|
|
|
40
58
|
IF ALL CRITICAL GUARDRAILS ARE PRESENT (tests work, even if linting/types are missing):
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
You are fixing a PR based on a maintainer's request.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
You are already inside the {{repo}} repo at branch {{branch}} — the harness
|
|
4
|
+
pre-cloned the PR's head ref and your cwd is the repo root. Git is configured.
|
|
5
|
+
Read CLAUDE.md (and CONTRIBUTING.md if present) for project-specific guidance.
|
|
6
6
|
|
|
7
7
|
CONTEXT:
|
|
8
8
|
- PR #{{prNumber}}: {{prTitle}}
|
|
@@ -13,10 +13,9 @@ NOTE: The CI failures above are the primary issue — fix those first.
|
|
|
13
13
|
{{/if}}
|
|
14
14
|
INSTRUCTIONS:
|
|
15
15
|
1. Understand what the maintainer is asking for
|
|
16
|
-
2. Read the relevant code and
|
|
17
|
-
3.
|
|
18
|
-
|
|
19
|
-
5. DO NOT commit until all checks pass
|
|
16
|
+
2. Read the relevant code and make the fix — keep changes minimal and focused
|
|
17
|
+
3. Follow the **building** skill: install dependencies, then run the full
|
|
18
|
+
test/lint/typecheck gate — do NOT commit until it all passes
|
|
20
19
|
|
|
21
20
|
AFTER FIXING:
|
|
22
21
|
1. git add -A && git commit -m "fix: address feedback on PR #{{prNumber}}
|
package/workflows/prompts/pr.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Create a pull request for the work on branch {{branch}}.
|
|
2
2
|
|
|
3
|
-
Use the MCP tool
|
|
3
|
+
Use the MCP tool github_create_pull_request with the following:
|
|
4
4
|
- owner: {{owner}}
|
|
5
5
|
- repo: {{repo}}
|
|
6
6
|
- head: {{branch}}
|
|
@@ -14,14 +14,14 @@ Use the MCP tool create_pull_request with the following:
|
|
|
14
14
|
(3-6 bullet points describing what changed)
|
|
15
15
|
|
|
16
16
|
## Planning and execution docs
|
|
17
|
-
- [Guardrails report]({{
|
|
18
|
-
- [Architect plan]({{
|
|
19
|
-
- [Executor summary]({{
|
|
20
|
-
- [Reviewer verdict]({{
|
|
21
|
-
- [Status]({{
|
|
17
|
+
- [Guardrails report]({{artifactUrl guardrails-report.md}})
|
|
18
|
+
- [Architect plan]({{artifactUrl architect-plan.md}})
|
|
19
|
+
- [Executor summary]({{artifactUrl executor-summary.md}})
|
|
20
|
+
- [Reviewer verdict]({{artifactUrl reviewer-verdict.md}})
|
|
21
|
+
- [Status]({{artifactUrl status.md}})
|
|
22
22
|
|
|
23
23
|
Before adding each link above, run `ls -1 {{issueDir}}/`
|
|
24
|
-
|
|
24
|
+
and OMIT any line whose file doesn't exist on disk. Use the
|
|
25
25
|
exact full https URLs above as written — do NOT shorten to relative paths,
|
|
26
26
|
they will not render in the PR description.
|
|
27
27
|
|
|
@@ -30,9 +30,10 @@ Use the MCP tool create_pull_request with the following:
|
|
|
30
30
|
|
|
31
31
|
Note: There are unresolved reviewer issues after {{review.cycles}} fix cycles. See reviewer-verdict.md on the branch.{{/if}}
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Do NOT post a comment with the PR link — the harness adds it to the status
|
|
34
|
+
checklist on the issue automatically. Just create the PR.
|
|
34
35
|
|
|
35
36
|
Update status.md: current_phase = complete, add pr_number.
|
|
36
|
-
git add .lastlight/ && git commit -m "status: PR created for #{{issueNumber}}" && git push origin HEAD
|
|
37
|
+
{{#if !externalizeArtifacts}}git add .lastlight/ && git commit -m "status: PR created for #{{issueNumber}}" && git push origin HEAD{{/if}}{{#if externalizeArtifacts}}Do NOT git add or commit {{issueDir}}/ — the harness persists it to the Last Light server automatically.{{/if}}
|
|
37
38
|
|
|
38
|
-
OUTPUT: The PR number and URL.
|
|
39
|
+
OUTPUT: The PR number and URL (so the harness can link the PR from the checklist).
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
You are running the **browser-QA pass** of a qa-test run — driving the target
|
|
2
|
+
through its flow in a **real headless browser** and capturing **screenshot
|
|
3
|
+
evidence** for each step. A text-evidence QA run already ran and posted its
|
|
4
|
+
per-step report; your job is to add visual proof for the steps that exercise a
|
|
5
|
+
rendered UI. Read the `browser-qa` skill for the driver contract and the
|
|
6
|
+
`qa-test` skill for the flow procedure and report shape, then follow them. The
|
|
7
|
+
`building` skill installs and runs the repo.
|
|
8
|
+
|
|
9
|
+
**Stay in the browser.** Do **not** read, quote, or analyse the repo's source
|
|
10
|
+
code — the text pass already covered it. Your evidence is strictly what the
|
|
11
|
+
browser shows: the driver's extracted text, assertion results, console errors,
|
|
12
|
+
and the screenshots. No code walkthroughs.
|
|
13
|
+
|
|
14
|
+
## What to test
|
|
15
|
+
|
|
16
|
+
{{#if commentBody}}
|
|
17
|
+
**Target / steps / request:**
|
|
18
|
+
{{commentBody}}
|
|
19
|
+
{{/if}}
|
|
20
|
+
{{#if issueTitle}}**Issue/PR title:** {{issueTitle}}{{/if}}
|
|
21
|
+
{{#if issueBody}}
|
|
22
|
+
**Issue/PR body:**
|
|
23
|
+
{{issueBody}}
|
|
24
|
+
{{/if}}
|
|
25
|
+
|
|
26
|
+
Target repo: **{{owner}}/{{repo}}**
|
|
27
|
+
{{#if issueNumber}}Target issue/PR: **#{{issueNumber}}**{{/if}}
|
|
28
|
+
|
|
29
|
+
If the target is a CLI or a pure API with no UI, the text pass already covered
|
|
30
|
+
it — keep this pass short and say no browser evidence was needed. Focus on flows
|
|
31
|
+
that actually render a UI.
|
|
32
|
+
|
|
33
|
+
## First: confirm the browser is available
|
|
34
|
+
|
|
35
|
+
Run the driver's probe before anything else:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
node <browser-qa skill dir>/scripts/agent-browser.mjs doctor
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
(The `browser-qa` skill is staged into this phase's skill bundle — find its
|
|
42
|
+
absolute path from the available-skills catalogue.) If `doctor` exits non-zero,
|
|
43
|
+
the browser toolchain isn't present: say so plainly and stop — do not fake
|
|
44
|
+
screenshots. This phase only runs on the docker QA image, so `doctor` should
|
|
45
|
+
pass.
|
|
46
|
+
|
|
47
|
+
## Workspace + run the app
|
|
48
|
+
|
|
49
|
+
You are already inside the **{{repo}}** repo at branch {{branch}} — the harness
|
|
50
|
+
pre-cloned it and your cwd is the repo root (no `cd`). If this is a PR, read the
|
|
51
|
+
diff and design a flow that exercises what changed. Follow the `building` skill
|
|
52
|
+
to install and start the app's dev-server in the background; wait until it's
|
|
53
|
+
listening on `localhost`.
|
|
54
|
+
|
|
55
|
+
## Drive the flow and capture evidence
|
|
56
|
+
|
|
57
|
+
State the steps and their success criteria first. Author a `flow.json` (shape
|
|
58
|
+
documented in the `browser-qa` skill), then run `agent-browser.mjs run flow.json
|
|
59
|
+
--base-url http://localhost:<port> --out-dir {{issueDir}}`, capturing a
|
|
60
|
+
screenshot at each decisive step. Save every screenshot under **`{{issueDir}}/`**
|
|
61
|
+
— the harness harvests that directory. Parse the JSON report (per-step status,
|
|
62
|
+
extracted text, assertion results, console errors) — that, not the images, is
|
|
63
|
+
what you reason over. On a step failure continue to the next step unless it
|
|
64
|
+
blocks everything downstream; treat console/page errors as findings.
|
|
65
|
+
|
|
66
|
+
## How your report is delivered — read carefully
|
|
67
|
+
|
|
68
|
+
Your **final message is the report**, and the harness posts it for you{{#if issueNumber}} as
|
|
69
|
+
a comment on **#{{issueNumber}}**{{/if}}{{#if !issueNumber}} back into the thread this request came from{{/if}}.
|
|
70
|
+
Title it clearly as the **browser-QA evidence** so it reads as a supplement to
|
|
71
|
+
the text report, not a competing one. Use the `qa-test` report shape
|
|
72
|
+
(Environment / Results table / Issues found / Coverage). Every defined step gets
|
|
73
|
+
a row and a result.
|
|
74
|
+
|
|
75
|
+
**Keep it tight** — a one-line environment summary, the results table (one row
|
|
76
|
+
per step, terse Evidence cell), the inline screenshots, any issues found, and a
|
|
77
|
+
short "what was / wasn't exercised". No per-step narration or code analysis.
|
|
78
|
+
|
|
79
|
+
**Embed each step's screenshot inline** in its Evidence cell so it renders in
|
|
80
|
+
the comment.
|
|
81
|
+
{{#if artifactBaseUrl}}Every PNG you saved to `<name>.png` is served publicly at
|
|
82
|
+
`{{artifactBaseUrl}}/<name>.png`. Put a **raw Markdown image** in the Evidence
|
|
83
|
+
cell — `!` then `[caption]` then the URL in parentheses — with no backticks and
|
|
84
|
+
no code fence (inside a code span it shows as literal text instead of
|
|
85
|
+
rendering). For example, a screenshot saved as `step-2.png` becomes: an
|
|
86
|
+
exclamation mark, `[Step 2]`, then `({{artifactBaseUrl}}/step-2.png)` with no
|
|
87
|
+
spaces and no backticks.{{/if}}{{#if !artifactBaseUrl}}No public URL is
|
|
88
|
+
configured, so reference each screenshot by filename (e.g. `step-2-cart.png`)
|
|
89
|
+
and note it's in the run's Artifacts view.{{/if}}
|
|
90
|
+
|
|
91
|
+
**Do NOT post it yourself** with `github_add_issue_comment` — that would
|
|
92
|
+
double-post. Never claim a step passed that you didn't run, and never fabricate
|
|
93
|
+
a screenshot. If screenshots couldn't be persisted (no server-mode build
|
|
94
|
+
assets), still report the per-step DOM/text observations and say the images
|
|
95
|
+
weren't retained.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
You are writing the **single final QA report** for a qa-test run. Two passes
|
|
2
|
+
have already run: a text-evidence QA flow and (sometimes) a browser-QA pass.
|
|
3
|
+
Your job is to **synthesize them into one concise report** — the reader sees
|
|
4
|
+
only your output, not the individual passes.
|
|
5
|
+
|
|
6
|
+
This is a **pure writing task**. Do **not** run commands, install anything, read
|
|
7
|
+
repo files, or start a server — everything you need is below. Do **not** post a
|
|
8
|
+
comment yourself (`github_add_issue_comment`); your final message *is* the
|
|
9
|
+
comment, delivered by the harness.
|
|
10
|
+
|
|
11
|
+
## What was tested
|
|
12
|
+
|
|
13
|
+
{{#if commentBody}}{{commentBody}}{{/if}}{{#if issueTitle}} (issue/PR: {{issueTitle}}){{/if}}
|
|
14
|
+
|
|
15
|
+
## Text QA report
|
|
16
|
+
|
|
17
|
+
{{qaResult}}
|
|
18
|
+
|
|
19
|
+
{{#if qaBrowserResult}}
|
|
20
|
+
## Browser-QA report (real headless browser + screenshots)
|
|
21
|
+
|
|
22
|
+
{{qaBrowserResult}}
|
|
23
|
+
{{/if}}
|
|
24
|
+
|
|
25
|
+
## Write the report
|
|
26
|
+
|
|
27
|
+
Produce a tight Markdown comment:
|
|
28
|
+
|
|
29
|
+
- A **single results table** (`| Step | Status | Evidence |`) covering every
|
|
30
|
+
step exercised across both passes. When the same step ran in both, prefer the
|
|
31
|
+
browser result for rendered-UI steps and note the text result only if it adds
|
|
32
|
+
something. Mark untested/blocked steps honestly.
|
|
33
|
+
{{#if qaBrowserResult}}- **Embed each step's screenshot inline** in its Evidence cell exactly as it
|
|
34
|
+
appears in the browser-QA report above (the ``
|
|
35
|
+
image Markdown) so it renders in this comment. Keep them; don't turn them into
|
|
36
|
+
plain links or drop them.{{/if}}
|
|
37
|
+
- A short **Issues found** list (each real FAIL with expected vs observed), or
|
|
38
|
+
"none" if clean.
|
|
39
|
+
- A one-line **coverage** note: what was exercised, and anything notable that
|
|
40
|
+
wasn't.
|
|
41
|
+
|
|
42
|
+
Keep it short — no per-step narration outside the table, no restating both
|
|
43
|
+
reports in full. Surface real failures plainly; never claim a step passed that
|
|
44
|
+
neither pass actually ran.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
You are running a **QA test flow** — driving a target through a sequence of
|
|
2
|
+
steps and reporting step-level pass/fail with evidence. Read the `qa-test` skill
|
|
3
|
+
for the full procedure, then follow it. It uses the `building` skill for
|
|
4
|
+
installing and running the repo. This prompt gives you the target/steps and how
|
|
5
|
+
your report is delivered.
|
|
6
|
+
|
|
7
|
+
## What to test
|
|
8
|
+
|
|
9
|
+
{{#if commentBody}}
|
|
10
|
+
**Target / steps / request:**
|
|
11
|
+
{{commentBody}}
|
|
12
|
+
{{/if}}
|
|
13
|
+
{{#if issueTitle}}**Issue/PR title:** {{issueTitle}}{{/if}}
|
|
14
|
+
{{#if issueBody}}
|
|
15
|
+
**Issue/PR body:**
|
|
16
|
+
{{issueBody}}
|
|
17
|
+
{{/if}}
|
|
18
|
+
|
|
19
|
+
Target repo: **{{owner}}/{{repo}}**
|
|
20
|
+
{{#if issueNumber}}Target issue/PR: **#{{issueNumber}}**{{/if}}
|
|
21
|
+
|
|
22
|
+
If specific steps are given (often after `--`), use them. Otherwise, if this is a
|
|
23
|
+
PR, read the diff and design a flow that exercises what changed. State the steps
|
|
24
|
+
and their success criteria before running.
|
|
25
|
+
|
|
26
|
+
## Workspace
|
|
27
|
+
|
|
28
|
+
You are already inside the **{{repo}}** repo at branch {{branch}} — the harness
|
|
29
|
+
pre-cloned it and your cwd is the repo root. Git is configured; no clone, no
|
|
30
|
+
`cd`.
|
|
31
|
+
|
|
32
|
+
## Evidence — what you can and can't drive
|
|
33
|
+
|
|
34
|
+
You have **bash, file read, and the github tools** — no browser, no
|
|
35
|
+
screenshots. QA a **CLI** directly, or a **web service** by starting its
|
|
36
|
+
dev-server in the background and exercising it with `curl` (status codes,
|
|
37
|
+
bodies, headers). Capture stdout/stderr and exit codes as per-step evidence.
|
|
38
|
+
|
|
39
|
+
If the **whole target is a rendered UI** (the flow only makes sense in a
|
|
40
|
+
browser), don't install/build to guess at it — a browser-QA pass runs after you
|
|
41
|
+
and owns it. Note in one line that it's UI-shaped and deferred, and stop. For a
|
|
42
|
+
**mixed** flow, drive the text/CLI/API steps here and mark only the
|
|
43
|
+
rendered-UI steps **BLOCKED** (deferred to browser QA) rather than faking a
|
|
44
|
+
result. On a step failure, continue to the next step unless it blocks
|
|
45
|
+
everything downstream.
|
|
46
|
+
|
|
47
|
+
## How your report is delivered — read carefully
|
|
48
|
+
|
|
49
|
+
Your **final message is the report**, and the harness posts it for you:
|
|
50
|
+
{{#if issueNumber}}
|
|
51
|
+
- as a comment on **#{{issueNumber}}**.
|
|
52
|
+
{{/if}}
|
|
53
|
+
{{#if !issueNumber}}
|
|
54
|
+
- back into the thread this request came from.
|
|
55
|
+
{{/if}}
|
|
56
|
+
|
|
57
|
+
Make your final message the complete QA report in the shape the `qa-test` skill
|
|
58
|
+
defines (Environment / Results table / Issues found / Coverage). **Do NOT post
|
|
59
|
+
it yourself** with `github_add_issue_comment` — that would double-post. Report
|
|
60
|
+
real failures as failures; never claim a step passed that you didn't run.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
You are the CODE REVIEWER — RE-REVIEW after fix cycle {{fixCycle}}.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
You are already inside the {{repo}} repo at branch {{branch}} — the harness
|
|
4
|
+
pre-cloned it and your cwd is the repo root. Git is configured.
|
|
5
5
|
|
|
6
6
|
This is a FOLLOW-UP review. You previously requested changes. The executor has attempted to fix them.
|
|
7
7
|
|
|
@@ -10,17 +10,16 @@ SCOPE — review ONLY what changed in the fix cycle:
|
|
|
10
10
|
2. Read the "## Fix Cycle {{fixCycle}}" section in {{issueDir}}/executor-summary.md — what was fixed
|
|
11
11
|
3. Diff only the fix commit(s): git log --oneline -3 and git diff HEAD~1
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
DO NOT re-review the entire changeset. Only verify your previous issues were fixed.
|
|
13
|
+
Verify your previous issues were actually addressed and the fix introduced no new
|
|
14
|
+
problems (apply the **code-review** rubric to the fix). Do NOT re-review the
|
|
15
|
+
entire changeset. Tests: the fix cycle already ran the full suite (see its
|
|
16
|
+
summary section) — for independent signal, follow the **building** skill to run
|
|
17
|
+
the typecheck command and the tests covering the fixed files.
|
|
19
18
|
|
|
20
19
|
AFTER REVIEW:
|
|
21
20
|
1. APPEND to {{issueDir}}/reviewer-verdict.md under heading "## Re-review after Fix Cycle {{fixCycle}}" (preserve the original verdict above). The new section MUST itself contain a "VERDICT: APPROVED" or "VERDICT: REQUEST_CHANGES" line.
|
|
22
21
|
2. Update status.md with reviewer_status: APPROVED or REQUEST_CHANGES
|
|
23
|
-
3. git add .lastlight/ && git commit -m "review: re-review after fix cycle {{fixCycle}} for #{{issueNumber}}" && git push origin HEAD
|
|
22
|
+
{{#if !externalizeArtifacts}}3. git add .lastlight/ && git commit -m "review: re-review after fix cycle {{fixCycle}} for #{{issueNumber}}" && git push origin HEAD{{/if}}{{#if externalizeArtifacts}}3. Do NOT git add or commit {{issueDir}}/ — the harness persists it to the Last Light server automatically.{{/if}}
|
|
24
23
|
|
|
25
24
|
OUTPUT FORMAT — your stdout MUST start with one of these two lines, EXACTLY, on its own line, with no leading whitespace:
|
|
26
25
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
You are the CODE REVIEWER. Independent verification — you have NO shared context with the executor.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
You are already inside the {{repo}} repo at branch {{branch}} — the harness
|
|
4
|
+
pre-cloned it and your cwd is the repo root. Git is configured.
|
|
5
5
|
|
|
6
6
|
SCOPE — review ONLY changed files:
|
|
7
7
|
git log --oneline main..HEAD
|
|
@@ -10,13 +10,14 @@ SCOPE — review ONLY changed files:
|
|
|
10
10
|
|
|
11
11
|
Read {{issueDir}}/architect-plan.md and executor-summary.md for context.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
3. Security concerns?
|
|
17
|
-
4. Logic errors or missed edge cases?
|
|
13
|
+
Apply the **code-review** skill's rubric (finding tiers + what to check), scoped
|
|
14
|
+
to the changed files, and confirm the implementation matches the plan. Do NOT
|
|
15
|
+
review unchanged files or flag pre-existing issues.
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
Tests: the executor already ran the FULL suite and pasted results in
|
|
18
|
+
executor-summary.md — review that output rather than re-running everything. For
|
|
19
|
+
your own independent signal, follow the **building** skill to run the typecheck
|
|
20
|
+
command and the tests covering the changed files.
|
|
20
21
|
|
|
21
22
|
AFTER REVIEW:
|
|
22
23
|
1. Write {{issueDir}}/reviewer-verdict.md with the following structure (exact headings):
|
|
@@ -38,7 +39,7 @@ AFTER REVIEW:
|
|
|
38
39
|
(paste actual output)
|
|
39
40
|
|
|
40
41
|
2. Update status.md with reviewer_status: APPROVED or REQUEST_CHANGES (matching the verdict)
|
|
41
|
-
3. git add .lastlight/ && git commit -m "review: verdict for #{{issueNumber}}" && git push origin HEAD
|
|
42
|
+
{{#if !externalizeArtifacts}}3. git add .lastlight/ && git commit -m "review: verdict for #{{issueNumber}}" && git push origin HEAD{{/if}}{{#if externalizeArtifacts}}3. Do NOT git add or commit {{issueDir}}/ — the harness persists it to the Last Light server automatically.{{/if}}
|
|
42
43
|
|
|
43
44
|
OUTPUT FORMAT — your stdout MUST start with one of these two lines, EXACTLY, on its own line, with no leading whitespace:
|
|
44
45
|
|