@codyswann/lisa 2.326.3 → 2.328.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/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +55 -29
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/sync/lifecycle-defaults.d.ts +61 -0
- package/dist/sync/lifecycle-defaults.d.ts.map +1 -0
- package/dist/sync/lifecycle-defaults.js +75 -0
- package/dist/sync/lifecycle-defaults.js.map +1 -0
- package/dist/sync/registry.d.ts.map +1 -1
- package/dist/sync/registry.js +15 -23
- package/dist/sync/registry.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-detect-tooling/SKILL.md +21 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +25 -13
- package/plugins/lisa/.codex-plugin/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-build-intake/SKILL.md +76 -66
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa/.codex-plugin/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/.codex-plugin/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-secrets-access/scripts/validate-config.mjs +72 -10
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-local-env/SKILL.md +95 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-local-env/agents/openai.yaml +4 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-local-env/scripts/local-env.mjs +174 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/SKILL.md +27 -11
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +70 -30
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/toolchain.mjs +132 -6
- package/plugins/lisa/.codex-plugin/skills/lisa-tracker-sync/SKILL.md +2 -2
- package/plugins/lisa/agents/linear-agent.md +6 -6
- package/plugins/lisa/agents/linear-build-intake.md +3 -3
- package/plugins/lisa/commands/setup/local-env.md +7 -0
- package/plugins/lisa/rules/eager/rejection-detection.md +2 -2
- package/plugins/lisa/rules/reference/config-resolution.md +37 -9
- package/plugins/lisa/rules/reference/rejection-detection.md +2 -2
- package/plugins/lisa/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/skills/lisa-detect-tooling/SKILL.md +21 -1
- package/plugins/lisa/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +25 -13
- package/plugins/lisa/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-secrets-access/scripts/validate-config.mjs +72 -10
- package/plugins/lisa/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa/skills/lisa-setup-local-env/SKILL.md +95 -0
- package/plugins/lisa/skills/lisa-setup-local-env/agents/openai.yaml +4 -0
- package/plugins/lisa/skills/lisa-setup-local-env/scripts/local-env.mjs +174 -0
- package/plugins/lisa/skills/lisa-setup-remote-env/SKILL.md +27 -11
- package/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +70 -30
- package/plugins/lisa/skills/lisa-setup-remote-env/scripts/toolchain.mjs +132 -6
- package/plugins/lisa/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-tracker-sync/SKILL.md +2 -2
- package/plugins/lisa-agy/agents/linear-agent.md +6 -6
- package/plugins/lisa-agy/agents/linear-build-intake.md +3 -3
- package/plugins/lisa-agy/commands/lisa/setup/local-env.md +7 -0
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/lisa-detect-tooling/SKILL.md +21 -1
- package/plugins/lisa-agy/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +25 -13
- package/plugins/lisa-agy/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa-agy/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa-agy/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa-agy/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa-agy/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa-agy/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa-agy/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa-agy/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-agy/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-secrets-access/scripts/validate-config.mjs +72 -10
- package/plugins/lisa-agy/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa-agy/skills/lisa-setup-local-env/SKILL.md +95 -0
- package/plugins/lisa-agy/skills/lisa-setup-local-env/scripts/local-env.mjs +174 -0
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/SKILL.md +27 -11
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +70 -30
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/toolchain.mjs +132 -6
- package/plugins/lisa-agy/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-tracker-sync/SKILL.md +2 -2
- 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/agents/linear-agent.agent.md +6 -6
- package/plugins/lisa-copilot/agents/linear-build-intake.agent.md +3 -3
- package/plugins/lisa-copilot/commands/lisa/setup/local-env.md +7 -0
- package/plugins/lisa-copilot/rules/eager/rejection-detection.md +2 -2
- package/plugins/lisa-copilot/rules/reference/config-resolution.md +37 -9
- package/plugins/lisa-copilot/rules/reference/rejection-detection.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-detect-tooling/SKILL.md +21 -1
- package/plugins/lisa-copilot/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +25 -13
- package/plugins/lisa-copilot/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa-copilot/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa-copilot/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa-copilot/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa-copilot/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa-copilot/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa-copilot/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-copilot/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-secrets-access/scripts/validate-config.mjs +72 -10
- package/plugins/lisa-copilot/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa-copilot/skills/lisa-setup-local-env/SKILL.md +95 -0
- package/plugins/lisa-copilot/skills/lisa-setup-local-env/scripts/local-env.mjs +174 -0
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/SKILL.md +27 -11
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +70 -30
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/toolchain.mjs +132 -6
- package/plugins/lisa-copilot/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-tracker-sync/SKILL.md +2 -2
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/linear-agent.md +6 -6
- package/plugins/lisa-cursor/agents/linear-build-intake.md +3 -3
- package/plugins/lisa-cursor/commands/lisa/setup/local-env.md +7 -0
- package/plugins/lisa-cursor/rules/config-resolution-reference.mdc +37 -9
- package/plugins/lisa-cursor/rules/rejection-detection-reference.mdc +2 -2
- package/plugins/lisa-cursor/rules/rejection-detection.mdc +2 -2
- package/plugins/lisa-cursor/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/lisa-detect-tooling/SKILL.md +21 -1
- package/plugins/lisa-cursor/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +25 -13
- package/plugins/lisa-cursor/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/lisa-cursor/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/lisa-cursor/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/lisa-cursor/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/lisa-cursor/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/lisa-cursor/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/lisa-cursor/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/lisa-cursor/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/lisa-cursor/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-secrets-access/scripts/validate-config.mjs +72 -10
- package/plugins/lisa-cursor/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/lisa-cursor/skills/lisa-setup-local-env/SKILL.md +95 -0
- package/plugins/lisa-cursor/skills/lisa-setup-local-env/scripts/local-env.mjs +174 -0
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/SKILL.md +27 -11
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +70 -30
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/toolchain.mjs +132 -6
- package/plugins/lisa-cursor/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-tracker-sync/SKILL.md +2 -2
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +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-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- 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 +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-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 +1 -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-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 +1 -1
- 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/agents/linear-agent.md +6 -6
- package/plugins/src/base/agents/linear-build-intake.md +3 -3
- package/plugins/src/base/commands/setup/local-env.md +7 -0
- package/plugins/src/base/rules/eager/rejection-detection.md +2 -2
- package/plugins/src/base/rules/reference/config-resolution.md +37 -9
- package/plugins/src/base/rules/reference/rejection-detection.md +2 -2
- package/plugins/src/base/skills/lisa-confluence-to-tracker/SKILL.md +3 -3
- package/plugins/src/base/skills/lisa-detect-tooling/SKILL.md +21 -1
- package/plugins/src/base/skills/lisa-detect-tooling/scripts/detect-tooling.mjs +25 -13
- package/plugins/src/base/skills/lisa-github-validate-issue/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-jira-build-intake/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-jira-validate-ticket/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-linear-access/SKILL.md +20 -9
- package/plugins/src/base/skills/lisa-linear-build-intake/SKILL.md +77 -67
- package/plugins/src/base/skills/lisa-linear-claim/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-linear-evidence/SKILL.md +7 -7
- package/plugins/src/base/skills/lisa-linear-journey/SKILL.md +2 -2
- package/plugins/src/base/skills/lisa-linear-sync/SKILL.md +34 -30
- package/plugins/src/base/skills/lisa-linear-to-tracker/SKILL.md +3 -3
- package/plugins/src/base/skills/lisa-linear-validate-issue/SKILL.md +6 -6
- package/plugins/src/base/skills/lisa-linear-write-issue/SKILL.md +8 -7
- package/plugins/src/base/skills/lisa-notion-to-tracker/SKILL.md +3 -3
- package/plugins/src/base/skills/lisa-repair-intake/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-secrets-access/scripts/validate-config.mjs +72 -10
- package/plugins/src/base/skills/lisa-setup-linear/SKILL.md +59 -12
- package/plugins/src/base/skills/lisa-setup-local-env/SKILL.md +95 -0
- package/plugins/src/base/skills/lisa-setup-local-env/scripts/local-env.mjs +174 -0
- package/plugins/src/base/skills/lisa-setup-remote-env/SKILL.md +27 -11
- package/plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +70 -30
- package/plugins/src/base/skills/lisa-setup-remote-env/scripts/toolchain.mjs +132 -6
- package/plugins/src/base/skills/lisa-tracker-build-intake/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-tracker-sync/SKILL.md +2 -2
|
@@ -17,7 +17,7 @@ skills:
|
|
|
17
17
|
|
|
18
18
|
You are a Linear build-intake agent. Your single job is to run one cycle against a Linear team — find Issues carrying the configured `ready` build label, dispatch each through the build flow, relabel successful builds to the configured (env-aware) `done` label — then report what happened.
|
|
19
19
|
|
|
20
|
-
Build-
|
|
20
|
+
Build-lifecycle role names (`ready`, `claimed`, `review`, `blocked`, `done`) are resolved from `.lisa.config.json` `linear.workflow.*` by the `linear-build-intake` skill, and name native **workflow states**, not labels. Defaults: `Todo`, `In Progress`, `In Review`, `Blocked`, env-keyed `{ dev: "On Dev", staging: "On Stg", production: "Done" }`.
|
|
21
21
|
|
|
22
22
|
## Confirmation policy
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ Once you have a team key, RUN. Do not ask the caller whether to proceed, do not
|
|
|
27
27
|
|
|
28
28
|
### 1. Receive the query
|
|
29
29
|
|
|
30
|
-
The invoking caller (a slash command, a scheduled cron, or a parent agent) hands you a Linear team key (e.g. `ENG`) or the literal token `linear` (which falls back to `linear.teamKey` in `.lisa.config.json`). You do not pick the team yourself. Lifecycle label names are read from `linear.
|
|
30
|
+
The invoking caller (a slash command, a scheduled cron, or a parent agent) hands you a Linear team key (e.g. `ENG`) or the literal token `linear` (which falls back to `linear.teamKey` in `.lisa.config.json`). You do not pick the team yourself. Lifecycle label names are read from `linear.workflow.*` and are not your concern at this layer.
|
|
31
31
|
|
|
32
32
|
If no query is provided AND no `linear.teamKey` is configured, stop and ask. Never run intake against a default scope without explicit configuration — the side effects (label transitions, PRs opened, builds running) are too high to act without an explicit target.
|
|
33
33
|
|
|
@@ -58,7 +58,7 @@ If any Issues ended at the configured `blocked` label (pre-flight verify failed)
|
|
|
58
58
|
- **Never run a cycle without an explicit query or configured `linear.teamKey`.** Side effects too high to default.
|
|
59
59
|
- **Never modify the lifecycle**: only the configured `ready → claimed → done` transitions and terminal-only native Issue completion. Never touch the configured `blocked` label (owned by `linear-agent`) or any other label. (Exception: the configured `review` label is set by `linear-evidence` mid-flow — that's not your concern.)
|
|
60
60
|
- **Never bypass `linear-agent` to do build work directly.** The intake skill dispatches; `linear-agent` builds. Skipping the dispatch produces broken work.
|
|
61
|
-
- **Never invent labels.** Names live in `.lisa.config.json` `linear.
|
|
61
|
+
- **Never invent labels.** Names live in `.lisa.config.json` `linear.workflow.*` (canonical) — the setup skill writes them. If a team hasn't adopted them yet, the skill exits with an adoption hint. Don't guess label names.
|
|
62
62
|
- **Never start a second cycle while one is in flight against an overlapping team.** Serial execution. Scheduling layer (when added) is responsible for not double-firing.
|
|
63
63
|
- **Stop and surface failures rather than retry-loop.** If `linear-agent` returns an unexpected response or an error, the skill records it under "Errors" — pass that through. Do not auto-retry.
|
|
64
64
|
- **Pre-flight failures are not your problem to fix.** If an Issue fails `linear-verify` (missing Validation Journey, sign-in, etc.), `linear-agent` transitions it to the configured `blocked` label and reassigns to the creator. Surface the count and move on. Do NOT try to add the missing pieces from this agent.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Bring this machine in line with the toolchain the project declares. Reports every tool in remoteEnv.tools that is missing, outdated, or unpinned for this platform, and installs the missing ones into ~/.local/bin from the same pinned, checksummed entries the remote surfaces use — but only when asked with --install-tools. A newer tool already on PATH is left alone."
|
|
3
|
+
allowed-tools: ["Skill"]
|
|
4
|
+
argument-hint: "[--install-tools] [--json]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use the /lisa-setup-local-env skill to report and optionally install the project's declared toolchain on this machine. $ARGUMENTS
|
|
@@ -308,7 +308,7 @@ For each PRD epic, **invoke the `lisa-tracker-write` skill** (do not invoke `lis
|
|
|
308
308
|
- `artifacts`: the full Phase 1.5 artifact list — every artifact, regardless of domain. The epic is the canonical hub. No filtering at the epic level.
|
|
309
309
|
- `priority`, `labels`, `components`, `fix_version`: as appropriate
|
|
310
310
|
|
|
311
|
-
**Leaf-only build-ready (`leaf-only-lifecycle`)**: an Epic is a container, not a leaf work unit. Do NOT mark it build-ready — `lisa-tracker-write` must not be passed
|
|
311
|
+
**Leaf-only build-ready (`leaf-only-lifecycle`)**: an Epic is a container, not a leaf work unit. Do NOT mark it build-ready — `lisa-tracker-write` must not be passed the build-ready role for an Epic, and the Epic's lifecycle state rolls up from its children. The build-ready role is applied only in Phase 5.
|
|
312
312
|
|
|
313
313
|
Capture the returned epic key — Phase 4 needs it as the parent for stories.
|
|
314
314
|
|
|
@@ -339,7 +339,7 @@ For each story, **invoke `lisa-tracker-write`** with:
|
|
|
339
339
|
| Infrastructure | `ops`, `reference` |
|
|
340
340
|
| Mixed / setup ("X.0") | All domains |
|
|
341
341
|
|
|
342
|
-
**Leaf-only build-ready (`leaf-only-lifecycle`)**: a Story is a container (it has child Sub-tasks), not a leaf work unit. Do NOT mark it build-ready — never pass
|
|
342
|
+
**Leaf-only build-ready (`leaf-only-lifecycle`)**: a Story is a container (it has child Sub-tasks), not a leaf work unit. Do NOT mark it build-ready — never pass the build-ready role to `lisa-tracker-write` for a Story. Its lifecycle state rolls up from its Sub-tasks. The build-ready role is applied only in Phase 5.
|
|
343
343
|
|
|
344
344
|
Capture each returned story key — Phase 5 needs it as the parent for sub-tasks.
|
|
345
345
|
|
|
@@ -356,7 +356,7 @@ Each sub-task MUST:
|
|
|
356
356
|
2. **Include an Empirical Verification Plan** — real user-like verification, NOT unit tests, linting, or typechecking
|
|
357
357
|
3. **Carry its own `## Source Requirement` section** (shared format above) with the full verbatim quote(s) from the Phase 1.4 register — a leaf claimed by build-intake in isolation must be self-explanatory. When a sub-task is split per-repo, every split child inherits the same requirement quote(s).
|
|
358
358
|
|
|
359
|
-
**Leaf-only build-ready (`leaf-only-lifecycle`)**: Sub-tasks are the **leaf work units** of the decomposition — they are the ONLY items in the hierarchy that receive the build-ready
|
|
359
|
+
**Leaf-only build-ready (`leaf-only-lifecycle`)**: Sub-tasks are the **leaf work units** of the decomposition — they are the ONLY items in the hierarchy that receive the build-ready role. `lisa-tracker-write` applies the build-ready role here so downstream build intake (`lisa-tracker-build-intake`) claims the leaves and never the Epic or Stories. Apply the build-ready role to each Sub-task; never to its parent Story or Epic (Phases 3–4). `lisa-tracker-write` enforces the same invariant on the write side, so a Sub-task split into per-repo children (the cross-repo case above) carries build-ready on the children, not on any intermediate parent that gains child work.
|
|
360
360
|
|
|
361
361
|
Sub-tasks inherit their parent story's artifacts by reference (the parent link). Do not pass the same artifact list to every sub-task.
|
|
362
362
|
|
|
@@ -46,7 +46,27 @@ What genuinely differs is **consent**, not the list:
|
|
|
46
46
|
|
|
47
47
|
Omitting `surfaces` means every surface, because that is true of most tools and the cost of forgetting should be a redundant check rather than a silent absence.
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
Platform differences are **not** expressed with `surfaces`. A downloaded tool declares a
|
|
50
|
+
`platforms` map keyed `<platform>-<arch>`, each block carrying its own `install` method, `url`,
|
|
51
|
+
and `sha256`:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
"platforms": {
|
|
55
|
+
"linux-x64": { "install": "release-tar", "url": "...", "sha256": "..." },
|
|
56
|
+
"darwin-arm64": { "install": "release-zip", "url": "...", "sha256": "..." }
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The method lives inside the block because it varies — gh ships a `.tar.gz` for Linux and a
|
|
61
|
+
`.zip` for macOS. A flat entry means one artifact serves everything, which is true of
|
|
62
|
+
`npm-global` and nothing else.
|
|
63
|
+
|
|
64
|
+
This replaces an earlier convention worth naming, because its residue may still be in a
|
|
65
|
+
manifest you read: a Linux archive used to be marked `surfaces: ["remote"]` with a bare
|
|
66
|
+
`require` entry for `local`, so a laptop asserted the tool without being offered a binary it
|
|
67
|
+
could not run. That kept the wrong binary off the laptop by making the tool uninstallable
|
|
68
|
+
there — which is how `bws` and `gh`, the two CLIs Lisa's own guardrails shell out to, came to
|
|
69
|
+
be required on developer machines and provisionable only in containers.
|
|
50
70
|
|
|
51
71
|
## Usage
|
|
52
72
|
|
|
@@ -361,9 +361,11 @@ export function detectTooling(cwd = process.cwd()) {
|
|
|
361
361
|
/**
|
|
362
362
|
* The manifest entries an operator can paste, with the parts only they supply.
|
|
363
363
|
*
|
|
364
|
-
*
|
|
365
|
-
* `
|
|
366
|
-
*
|
|
364
|
+
* A release archive is proposed as a `platforms` map rather than a single URL
|
|
365
|
+
* plus `surfaces: ["remote"]`. The old shape could express only one artifact, so
|
|
366
|
+
* keeping a Linux binary off a laptop meant excluding the tool from laptops
|
|
367
|
+
* altogether — which is how `bws` and `gh` came to be required on a developer
|
|
368
|
+
* machine and installable only in a container.
|
|
367
369
|
* @param {{name: string}} proposal One detected tool.
|
|
368
370
|
* @returns {{install: object[], require: object[]}} Manifest skeletons.
|
|
369
371
|
*/
|
|
@@ -394,23 +396,33 @@ export function proposedEntries(proposal) {
|
|
|
394
396
|
require: [],
|
|
395
397
|
};
|
|
396
398
|
}
|
|
397
|
-
// A release archive is built for one platform, so
|
|
398
|
-
//
|
|
399
|
-
//
|
|
400
|
-
//
|
|
401
|
-
//
|
|
399
|
+
// A release archive is built for one platform, so every platform the project
|
|
400
|
+
// is developed or built on needs its own block — with its own install method,
|
|
401
|
+
// because a vendor may ship a tarball for one and a zip for another, as gh
|
|
402
|
+
// does. Both containers and laptops are proposed: a tool the manifest can
|
|
403
|
+
// only install remotely is one every developer installs by hand or does
|
|
404
|
+
// without.
|
|
405
|
+
//
|
|
406
|
+
// The placeholders stay unresolved on purpose. A guessed URL is an artifact
|
|
407
|
+
// the checksum cannot vouch for, which is the one property that makes a
|
|
408
|
+
// pinned entry worth reviewing.
|
|
409
|
+
const archive = platform => ({
|
|
410
|
+
install: "<release-tar or release-zip, whichever this platform ships>",
|
|
411
|
+
url: `<release url for this exact version, for ${platform}>`,
|
|
412
|
+
sha256: `<sha256 published with the ${platform} release>`,
|
|
413
|
+
});
|
|
402
414
|
return {
|
|
403
415
|
install: [
|
|
404
416
|
{
|
|
405
417
|
name: proposal.name,
|
|
406
418
|
version: "<pin>",
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
419
|
+
platforms: {
|
|
420
|
+
"linux-x64": archive("linux-x64"),
|
|
421
|
+
"darwin-arm64": archive("darwin-arm64"),
|
|
422
|
+
},
|
|
411
423
|
},
|
|
412
424
|
],
|
|
413
|
-
require: [
|
|
425
|
+
require: [],
|
|
414
426
|
};
|
|
415
427
|
}
|
|
416
428
|
|
|
@@ -251,7 +251,7 @@ PASS (the childless-parent exception) when the issue is build-ready and is a **l
|
|
|
251
251
|
| Epic | no | yes | **FAIL** (childless Epic — pure rollup container, exception does not apply) |
|
|
252
252
|
| any | any | no | **N/A** (not build-ready) |
|
|
253
253
|
|
|
254
|
-
Remediation (render `<READY_ROLE>` as the resolved configured label, never as a hard-coded default): `"Build-ready
|
|
254
|
+
Remediation (render `<READY_ROLE>` as the resolved configured label, never as a hard-coded default): `"Build-ready is leaf-only per leaf-only-lifecycle. Move <READY_ROLE> off this container onto its leaf children (or, for a childless Epic, decompose it into leaf children or reclassify it to a leaf type); a parent's lifecycle state rolls up from its children and is never set to ready directly."`
|
|
255
255
|
|
|
256
256
|
`product_relevant: false` — a build-ready container is a lifecycle/decomposition error for the caller to repair, not a product question.
|
|
257
257
|
|
|
@@ -189,7 +189,7 @@ The childless-parent exception promotes every childless type **except Epic** to
|
|
|
189
189
|
Post via `lisa-atlassian-access` `operation: comment key: <TICKET> body: "<message>"` with:
|
|
190
190
|
|
|
191
191
|
```text
|
|
192
|
-
[claude-build-intake] Not claimed: this ticket carries the build-ready status ($READY) but is a container with open child work (or a childless Epic), which violates the leaf-only-lifecycle rule. Build-ready
|
|
192
|
+
[claude-build-intake] Not claimed: this ticket carries the build-ready status ($READY) but is a container with open child work (or a childless Epic), which violates the leaf-only-lifecycle rule. Build-ready is leaf-only per leaf-only-lifecycle — an agent claims and implements leaves, never a container. Repair: move $READY off this parent onto its leaf children (or, for a childless Epic, decompose it into leaf children or reclassify it to a leaf type). A parent's lifecycle state rolls up from its children and is never set to ready directly.
|
|
193
193
|
```
|
|
194
194
|
|
|
195
195
|
This gate never blocks a legitimate flat Task/Bug: those have no open children and a leaf type, so they fall straight through to the claim in 3b.
|
|
@@ -252,7 +252,7 @@ PASS (the childless-parent exception) when the ticket is build-ready and is a **
|
|
|
252
252
|
| Epic | no | yes | **FAIL** (childless Epic — pure rollup container, exception does not apply) |
|
|
253
253
|
| any | any | no | **N/A** (not build-ready) |
|
|
254
254
|
|
|
255
|
-
Remediation: `"Build-ready
|
|
255
|
+
Remediation: `"Build-ready is leaf-only per leaf-only-lifecycle. Move the build-ready role off this container onto its leaf children (or, for a childless Epic, decompose it into leaf children or reclassify it to a leaf type); a parent's lifecycle state rolls up from its children and is never set to ready directly."`
|
|
256
256
|
|
|
257
257
|
`product_relevant: false` — a build-ready container is a lifecycle/decomposition error for the caller to repair, not a product question.
|
|
258
258
|
|
|
@@ -18,9 +18,11 @@ operation: get-team id:<ID>
|
|
|
18
18
|
operation: list-projects [team:<KEY>] [label:<NAME>] [state:<arr>]
|
|
19
19
|
operation: get-project id:<ID>
|
|
20
20
|
operation: save-project payload:{...}
|
|
21
|
-
operation: list-issues [team:<ID>] [project:<ID>] [label:<NAME>] [state_type:<arr>]
|
|
21
|
+
operation: list-issues [team:<ID>] [project:<ID>] [label:<NAME>] [state:<NAME>] [state_type:<arr>]
|
|
22
22
|
operation: get-issue id:<ID>
|
|
23
23
|
operation: save-issue payload:{...}
|
|
24
|
+
operation: list-workflow-states team:<ID>
|
|
25
|
+
operation: create-workflow-state payload:{...}
|
|
24
26
|
operation: list-comments issue_id:<ID>
|
|
25
27
|
operation: save-comment issue_id:<ID> body:"..."
|
|
26
28
|
operation: history id:<ID>
|
|
@@ -118,15 +120,24 @@ query($id:String!){
|
|
|
118
120
|
`toState.name`, `createdAt` (ISO timestamp), `actor.name`. Nodes with no
|
|
119
121
|
`fromState`/`toState` are non-state edits (label-only, assignee, etc.); keep
|
|
120
122
|
them for the label stream, skip them for workflow-state ordering.
|
|
121
|
-
- **
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
123
|
+
- **Build lanes are STATE-driven, so the `from`/`to` stream above is the primary
|
|
124
|
+
signal.** `lisa-linear-build-intake` keys the queue on workflow states
|
|
125
|
+
(`linear.workflow`), and `IssueHistory` inlines `fromState.name` /
|
|
126
|
+
`toState.name` directly — no catalog cross-reference, no ID resolution, no
|
|
127
|
+
reconstruction. Callers needing lifecycle transitions read them straight off
|
|
128
|
+
the node. This is strictly better than the label stream below and is why the
|
|
129
|
+
Linear adapter moved to states.
|
|
130
|
+
- **Label history (honest caveat, still needed for MARKERS and the PRD lane).**
|
|
131
|
+
`human_needed` is a label, and the PRD lifecycle rides on project labels, so
|
|
132
|
+
label moves still matter for those. `IssueHistory` carries label changes as
|
|
133
|
+
`addedLabelIds` / `removedLabelIds` — arrays of label **IDs**, not names. It
|
|
134
|
+
does **not** inline label names, and it does not carry the label's full
|
|
135
|
+
prior/next set — only the per-event deltas. Resolve IDs → names by
|
|
127
136
|
cross-referencing `list-issue-labels`. Do not overclaim: a caller that needs
|
|
128
|
-
|
|
129
|
-
|
|
137
|
+
label transitions reconstructs them from the ID deltas plus the label catalog,
|
|
138
|
+
not from an inline name on the history node. A caller reading a **build**
|
|
139
|
+
lifecycle transition should not be in this bullet at all — use the state
|
|
140
|
+
stream.
|
|
130
141
|
- **Empty is valid.** An Issue that never changed state returns an **empty**
|
|
131
142
|
history — an empty history is a valid result, not an error.
|
|
132
143
|
- **Graceful degrade — never block the build.** A failed history fetch returns
|