Repository navigation
Add experimental Custom processes that run skill Steps in order - #1401
Merged
Merged
Conversation
A ~/.thirdshift/processes file lists sequential skill Steps. thirdshift process lists them, check prints the plan, and running them shares one throwaway worktree and records the Command as Process.
The worktree follows the checked-out branch on origin. A missing file and invalid TOML name those rules, and the skill preamble and failure outcome are shared.
This was referenced Oct 26, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A Custom process is experimental. The file requires
version = 1, a description, and[[steps]]with anameandskill. Skill lookup isskills::find, the same lookupthirdshift skilluses. Every Step uses the Command's Harness, Model and Effort. The next Step's session prompt names the paths of earlier results.Evidence
thirdshift processwas not a command. Against the first commit of this branch,cargo test --test process -- steps_run_detached_at_the_base_branch_tip a_missing_file_and_a_syntax_error_are_not_version_refusalsfailed: the worktree was created at the launch checkout's HEAD and the session exited 1, and a missing file was refused asversion: version = 1 is required.After: Those two tests pass and are kept.
cargo test --test processpassed 13 tests.cargo test --test skillpassed 16 tests.cargo clippy --all-targets -- -D warningspassed.scripts/affected-tests issue-877passed: sitenpm test50 tests, thencargo nextest run3110 passed and 70 skipped, exit 0, real 2224.55s including compilation.Merge Danger
Door: two-way
The change adds a command and a new stored kind,
Process. Existing stored kinds are unchanged. Removing the command and the kind removes the feature.Blast Radius: command
thirdshift process, its help lines, the manual, and the prompts page. A process fetches the checked-out branch and detaches there. It does not take the Pass lock.Seam
Tests drive the
thirdshiftbinary through thetests/supportScenario: listing, check refusals, a two-step run, stdout and stderr, the Command record, worktree cleanup, resource waits, and Stop.Review coverage
Generated output left unread on purpose:
site/docs/index.html, generated fromdocs/guide.mdbysite/generate-docs.mjs. After the guide fix,cd site && npm run docsandnpm run docs:checkexited 0. The reviewed source isdocs/guide.md.prompts/process-step.md,prompts/process-step-later.md,prompts/README.md, and the generated fragment ofsite/prompts/index.html, generated fromsrc/prompt.rsandsrc/prompts_page.rs.UPDATE_PROMPTS=1 cargo test --bin thirdshift prompts_pagepassed 12 tests, and a later check ofprompts_pagepassed without rewriting the files.Standards did not read
src/launch.rs. That file changed after the review. Spec had readsrc/launch.rsbeforechecked_out_basewas added.Unaddressed findings
Security
None. Security review of
7f9adb3...HEADfound no introduced findings, so there is nothing unaddressed: process names with a path separator are usage errors that start no session (process_nameinsrc/args.rs, covered byprocess_arguments_that_are_not_a_file_name_are_usage_errors); Step names must be a single path component before they become result file names; skill lookup is the exact-matchskills::findshared withthirdshift skilland fails closed; sessions spawn via argv with no shell; the throwaway worktree is cleaned up on Drop.cargo test --test processpassed 13 tests,--test skill16 tests,--test command_surface20 tests. No proof-of-concept failed, so no fix was made here.Standards and Spec
None. The review raised 3 Standards findings and 2 Spec findings, and this branch addresses each one.
Closes #1380
Built with grok grok 1.0.70 (f50904eaee6c) [stable] · default model · default effort
Security review outcome
No unaddressed introduced findings.