Issues and CI runs

Issues from the terminal

An issue is the unit of work in Skalpai. Feedback collected from users is triaged in the web UI; whatever is worth doing becomes an issue, and sklp issue lets you create, retitle, move and mirror it without leaving the shell.

Every subcommand needs sklp auth login and a project: --project <id>, or SKLP_PROJECT in the environment (issue list --stack excepted). Most accept --json for the raw API payload.

ValueAllowed
--typebug, feature, task, other
--statusbacklog, in_progress, done, wontfix

Create and list

export SKLP_PROJECT=<project-id>
sklp issue new "Login loops after token refresh" --type bug --body "Steps: ..."
sklp issue new "Crash on export" --attach trace.txt --attach screen.png
sklp issue list --status in_progress --type bug
sklp issue list --stack <stack-id> --plain     # TSV, no header
sklp issue show <id>

--attach is repeatable. list --stack spans every project of the stack and adds a project column; --limit caps the rows. References: issue new, issue list, issue show.

Edit and move

sklp issue edit <id> --title "Login loop on refresh" --type bug
sklp issue status <id> in_progress
sklp issue status <id> wontfix --reason "duplicate of 812"

--reason records why an issue was closed. References: issue edit, issue status.

From feedback to issue

sklp issue promote <feedback-id> turns a triaged feedback into an issue, with optional --title, --body, --type and --status overrides.

sklp issue promote <feedback-id> --type feature --status backlog

Reference: issue promote.

GitHub mirror

An issue can carry a mirror issue on GitHub. The Skalpai issue stays the source of truth; the gh-* verbs only drive the mirror's state.

CommandEffect
sklp issue gh-link <id>open a GitHub issue mirroring this one
sklp issue gh-close <id>close the GitHub issue
sklp issue gh-reopen <id>reopen it
sklp issue gh-unlink <id>drop the link, leave the GitHub issue as is
sklp issue gh-link <id> --title "Login loop on refresh"
sklp issue gh-close <id>

Following CI

CI runs on the pull request, dispatched by the Skalpai app, not on GitHub Actions. sklp ci follows a run from the terminal, by run id or by branch.

sklp ci status --branch feat/login     # latest run for that branch
sklp ci status <run-id> --json
sklp ci watch --branch feat/login      # replay and tail logs until it ends

status prints the current state; watch replays the logs so far and tails them until the run completes. Both take --project (or SKLP_PROJECT). References: ci status, ci watch.