Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .ctl/operator/SKILL.md.jinja
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{%- from "ctl/invocation.md.jinja" import mounted_invocation -%}
{%- from "ctl/commands.md.jinja" import command_inventory -%}
{%- from "ctl/version.md.jinja" import version_line -%}
Comment thread
kodus-hostinger[bot] marked this conversation as resolved.
---
name: forkctl
description: >-
Expand All @@ -10,6 +11,7 @@ description: >-
generated patch exports/ledger, or the user mentions forkctl, downstream
patches, StGit fork maintenance, rebase recovery, or atomic fork publication.
license: MIT
{{ version_line(version) }}
compatibility: Requires forkctl plus supported git and stg executables; a repository-mounted mise `fork` task may provision exact versions.
---

Expand Down
6 changes: 6 additions & 0 deletions .ctl/ver.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ patterns:
task:
match: '"github:victor-software-house/forkctl" = "{version}"'
occurrences: once
skill:
match: "version: {version}"
occurrences: once

pins:
- file: examples/mise.toml
Expand All @@ -26,6 +29,9 @@ pins:
- file: tasks/fork/fork
package: forkctl
patterns: [task]
- file: skills/forkctl/SKILL.md
package: forkctl
patterns: [skill]

# One key per host binary; the name is the job, the tarball, and the platform.
# Both are built-in records; linux-x64 overrides only the triple, because the
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Forkctl is a Rust policy CLI for explicit audited StGit downstream patch stacks.
- Pretty help, result tables, notices, and errors fit the detected terminal width; redirected output may use the standard `COLUMNS` fallback. JSON and generated machine contracts never reflow.
- The remote catalog exposes one mounted `fork` file task using `dir = "{{cwd}}"`, exact task tools, the directives `ctl_core::mount_directives("fork")` returns (`raw = true`, `raw_args = true`, and the `#USAGE mount` line), and `exec forkctl "$@"`. `raw` hands the caller exactly what forkctl wrote: without it, in `prefix` output mode, mise relays each line and wraps it in colour whenever its own colour is on, as under `CLICOLOR_FORCE=1` into a pipe. Operators run `mise run fork status` with no `--`. The `--` in the mount is mise's completion bootstrap only.
- VSH Lefthook defaults call `mise run fork check -s` on pre-commit and `mise run fork check -q` on pre-push; other managers call the same commands.
- `skills/forkctl/SKILL.md` is the portable skills.sh-installable operator workflow. Keep it concise and synchronized with released CLI behavior; installed help/instructions remain authoritative, so the skill must not duplicate a full flag grammar. Templates under `.ctl/operator/` keep domain prose and import ctl-core's mounted invocation/no-`--` and command-inventory fragments from the Clap-derived `Surface`. `operator_docs` byte-compares both committed renders; update them with `UPDATE_OPERATOR_DOCS=1 cargo test operator_docs`.
- `skills/forkctl/SKILL.md` is the portable skills.sh-installable operator workflow. Keep it concise and synchronized with released CLI behavior; installed help/instructions remain authoritative, so the skill must not duplicate a full flag grammar. Templates under `.ctl/operator/` keep domain prose and import ctl-core's mounted invocation/no-`--` and command-inventory fragments from the Clap-derived `Surface`. `operator_docs` byte-compares both committed renders; update them with `UPDATE_OPERATOR_DOCS=1 cargo test operator_docs`. The skill's `version:` frontmatter renders from `CARGO_PKG_VERSION` through ctl-core's `version_line`, and the `skill` pin in `.ctl/ver.yaml` lets the Version PR move it with the release.
- Lifecycle fixtures use real Git/StGit binaries inside a private `tempfile` root with private HOME/XDG/Git configuration/templates, deterministic identity/time/locale, and command-local environment only; never inherit operator Git config or mutate the test process environment.
- `mise run test:isolated` runs the cargo-nextest suite one test at a time (`--test-threads=1`); keep ordinary lifecycle tests container-free unless the scenario actually requires another OS, daemon, network, or toolchain image.

Expand Down
1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ rust-version.workspace = true
description = "Control audited StGit downstream patch stacks"
license = "MIT"
repository = "https://github.com/victor-software-house/forkctl"
homepage = "https://github.com/victor-software-house/forkctl"
readme = "README.md"
keywords = ["git", "stgit", "fork", "patches", "cli"]
categories = ["command-line-utilities", "development-tools"]
Expand Down
1 change: 1 addition & 0 deletions skills/forkctl/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ description: >-
generated patch exports/ledger, or the user mentions forkctl, downstream
patches, StGit fork maintenance, rebase recovery, or atomic fork publication.
license: MIT
version: 0.0.38
compatibility: Requires forkctl plus supported git and stg executables; a repository-mounted mise `fork` task may provision exact versions.
---

Expand Down
1 change: 1 addition & 0 deletions src/operator_docs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ fn render_template(relative: &str) -> String {
.unwrap_or_else(|error| panic!("parse {relative}: {error}"))
.render(minijinja::context! {
surface => ctl_core::Surface::new::<Cli>("fork"),
version => env!("CARGO_PKG_VERSION"),
})
.unwrap_or_else(|error| panic!("render {relative}: {error}"))
}
Expand Down
9 changes: 9 additions & 0 deletions tasks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,15 @@ queue:
acceptance:
- The skill covers declared checks, the rewrite, append, propose, and promote publish modes, --set-default, and FORKCTL_<LONG> variables.
- Help for --check-at names stack|patch.

- id: FRK-025
title: Date the bundled skill with its release
scope: docs
outcome: The bundled skill names the forkctl release its text describes, and the Version PR moves it.
blocked_by: []
acceptance:
- 'skills/forkctl/SKILL.md carries version: equal to the crate version, rendered by operator_docs.'
- The skill pin in .ctl/ver.yaml matches it exactly once.
horizon:
- id: FRK-009
title: Install StGit without compiling it
Expand Down
Loading