You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: vendor stokowski for Linear-driven agent orchestration (#101)
## Summary
- Vendors `Sugar-Coffee/stokowski` as a git submodule
(`vendor/stokowski`) and checks in a shared `workflow.yaml` +
`.ai/prompts/*.md` - safe to commit since `tracker.api_key` is omitted
entirely, so Stokowski resolves it from the `LINEAR_API_KEY` env var at
runtime rather than anything in the file.
- Adds `mix stokowski` (root `repo_tasks` project) - for now it only
validates `workflow.yaml` is safe (exists, gitignored if it ever does
carry a literal key, no bare `api_key` literal). Actually launching a
session via `uv run --project vendor/stokowski` is deliberately deferred
to a follow-up.
- Removes the `lc` escript target - it never actually worked once
`exqlite` (a NIF-backed dep) was added, since NIFs can't load from
inside an escript archive, and nothing in CI or docs ever exercised it.
- Documents `mix run` as the supported way to invoke `lc` locally, plus
a standing rule to dogfood `lc` itself for Linear access rather than an
MCP server or other integration skill (`app/usage-rules.md`, indexed
from `AGENTS.md`).
- Closes#100. Mirrored as CRY-38 in Linear's "Linear CLI" project.
## Follow-ups (not in this PR)
- Wire `mix stokowski` up to actually start a session once the `uv run`
invocation has been tested end-to-end.
- Upstream PR to `Sugar-Coffee/stokowski`: `WorkflowConfig.agent_env()`
in `stokowski/config.py` checks the raw `tracker.api_key` string instead
of the resolved value (unlike `ProjectConfig.agent_env()`) - on a bad
`$VAR` reference it silently clobbers an otherwise-correct
`LINEAR_API_KEY` env var with an empty string. The README setup guide
(step 3) and single-project config reference also only show the
bare-literal `api_key` pattern.
## Test plan
- [x] `mix test` in `app/` - 227/227 passed
- [x] `mix format --check-formatted` clean in both `app/` and the root
`repo_tasks` project
- [x] `mix usage_rules.sync --check` clean in `app/`
- [x] Verified `workflow.yaml`/`.ai/prompts/*.md` contain no literal
secrets before committing (only commented `$LINEAR_API_KEY` examples)
- [x] Dogfooded `lc` itself (via `mix run`, no MCP) to create CRY-38 in
Linear's "Linear CLI" project, confirming the documented `mix run`
invocation actually works end-to-end
🤖 Generated with [Claude Code](https://claude.com/claude-code)
0 commit comments