sigit-code 1.2.2__tar.gz → 1.3.1__tar.gz
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.
- {sigit_code-1.2.2 → sigit_code-1.3.1}/CHANGELOG.md +38 -1
- {sigit_code-1.2.2 → sigit_code-1.3.1}/CLAUDE.md +53 -7
- {sigit_code-1.2.2 → sigit_code-1.3.1}/Cargo.lock +8 -18
- {sigit_code-1.2.2 → sigit_code-1.3.1}/Cargo.toml +2 -2
- {sigit_code-1.2.2 → sigit_code-1.3.1}/LICENSE +1 -1
- {sigit_code-1.2.2 → sigit_code-1.3.1}/PKG-INFO +2 -2
- {sigit_code-1.2.2 → sigit_code-1.3.1}/README.md +1 -1
- sigit_code-1.3.1/examples/skills/README.md +36 -0
- sigit_code-1.3.1/examples/skills/commit-message/SKILL.md +44 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/README.md +1 -1
- {sigit_code-1.2.2 → sigit_code-1.3.1}/pypi/README.md +1 -1
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/chat.rs +308 -80
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/credentials.rs +3 -0
- sigit_code-1.3.1/src/instructions.rs +261 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/main.rs +380 -111
- sigit_code-1.3.1/src/mcp.rs +954 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/models.rs +35 -2
- sigit_code-1.3.1/src/settings.rs +153 -0
- sigit_code-1.3.1/src/skills.rs +613 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/tools.rs +785 -33
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/AGENTS.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/agent-client-protocol/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/ai-assisted-coding/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/branding/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/sigit-code-release/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/tool-calling/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.claude/skills/run-sigit/SKILL.md +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.claude/skills/run-sigit/driver.mjs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.claude/skills/run-sigit/tui-smoke.sh +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/ci.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-crates.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-github.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-homebrew.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-npm.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-pypi.yml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.gitignore +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/.nvmrc +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/README.md.tmpl +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/package-main.json.tmpl +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/package.json.tmpl +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/scripts/render-main-package.cjs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/scripts/render-platform-package.cjs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/.gitignore +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/package.json +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/src/index.ts +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/tsconfig.json +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/pypi/pyproject.toml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/pyproject.toml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/rust-toolchain.toml +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/account.rs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/backend.rs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/provider.rs +0 -0
- {sigit_code-1.2.2 → sigit_code-1.3.1}/src/setup.rs +0 -0
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.3.1
|
|
4
|
+
|
|
5
|
+
Adds [Model Context Protocol](https://modelcontextprotocol.io) (MCP) client
|
|
6
|
+
support with the official siGit Code MCP server baked in, a set of agent tools
|
|
7
|
+
that close parity gaps in the tool layer, and refreshed branding and licensing.
|
|
8
|
+
|
|
9
|
+
### What changed
|
|
10
|
+
|
|
11
|
+
- siGit Code is now an MCP client: it connects to MCP servers over the Streamable HTTP transport (a single JSON-RPC endpoint), discovers the tools they expose, and offers them to the model alongside the built-in tools. When the model calls one, the call is forwarded to the owning server and the result fed back into the agent loop
|
|
12
|
+
- Bakes in the official siGit Code MCP server at `https://sigit.si/api/v1/mcp` (follows `SIGIT_CLOUD_URL`). When you are signed in (`sigit login`), the cloud session token is sent as the bearer credential
|
|
13
|
+
- Configure additional servers in `mcp.toml` — global (`~/.config/sigit/mcp.toml`) or project-local (`.sigit/mcp.toml`). Each `[[server]]` has a `name`, `url`, optional `enabled`, and optional `[server.headers]`; set `official = false` to opt out of the baked-in server
|
|
14
|
+
- MCP tools are namespaced `mcp__<server>__<tool>` so they never collide with built-in tools or across servers; tool output is capped to protect the model's context
|
|
15
|
+
- Discovery is best-effort at startup and bounded by a per-server timeout, so an unreachable server never blocks startup — it just contributes no tools
|
|
16
|
+
- Added a `/mcp` slash command (TUI and ACP) that lists configured servers, their connection status, and the tools each exposes
|
|
17
|
+
- Disable MCP entirely with `SIGIT_MCP=off`, or just the official server with `SIGIT_MCP_OFFICIAL=off`
|
|
18
|
+
- New agent tools that close parity gaps in the tool layer: `multi_edit` (apply a batch of exact-substring edits to one file atomically — written only if every edit matches), `glob` (locate files by name pattern with `**`/`*`/`?`/`{a,b}`, most-recently-modified first), `write_todos` (render a live task checklist through the tool result for multi-step work), and `remember` (append durable notes to the nearest `AGENTS.md`/`CLAUDE.md`)
|
|
19
|
+
- `edit_file` now supports `replace_all` and returns actionable failure context — naming the line whose trimmed text matches when only whitespace differs — so the model self-corrects in one round
|
|
20
|
+
- `search_files` gained a `file_glob` filter and a `max_results` cap (default 50, hard-capped at 1000) that also bounds the directory walk
|
|
21
|
+
- Refreshed branding and legal: updated `LICENSE`, `README`, and the npm/PyPI package descriptions
|
|
22
|
+
|
|
23
|
+
## 1.3.0
|
|
24
|
+
|
|
25
|
+
Adds a Local Inference on/off toggle, the open [Agent Skills](https://agentskills.io)
|
|
26
|
+
format, and support for project instruction files (`AGENTS.md` and the like).
|
|
27
|
+
|
|
28
|
+
### What changed
|
|
29
|
+
|
|
30
|
+
- Added a Local Inference on/off setting that is the explicit local-vs-cloud mode switch. It is persisted in `~/.config/sigit/settings.toml` (default on, local-first) and can be overridden with `SIGIT_LOCAL_INFERENCE`
|
|
31
|
+
- Toggle it with the `/local [on|off]` command (TUI and ACP); ACP clients without slash-command support get an equivalent "Local Inference" On/Off control in the session config panel
|
|
32
|
+
- `/models` now groups models by nature — Local vs siGit Code Cloud — and highlights the active mode's group while still showing the other, so the cloud tiers stay discoverable
|
|
33
|
+
- Discovers Agent Skills (folders with a `SKILL.md`) from `.sigit/skills/` and `.claude/skills/` in the project, `~/.config/sigit/skills/`, and `~/.claude/skills/`
|
|
34
|
+
- Follows the spec's progressive disclosure: each skill's name and description are advertised up front via a new `skill` tool, and the full instructions load only when the agent activates one
|
|
35
|
+
- Added a `/skills` slash command (TUI and ACP) that lists the discovered skills
|
|
36
|
+
- Reads project instruction files at session start: `AGENTS.md` (the cross-tool standard) and `CLAUDE.md`, walking from the working directory up to the repository root, plus a global file under `~/.config/sigit/`, and injects them into the session's system context so their guidance is always in force
|
|
37
|
+
- Nested instruction files are ordered outermost-first so the closest, most specific file takes precedence; the scan never reads above the repository root
|
|
38
|
+
- On-device models are no longer loaded implicitly. The chat UI and ACP sessions come up immediately, and the local model is brought into memory only when you run the `/load` command (or pick one in `/models`). Prompts sent before a model is loaded now return a hint instead of blocking on a multi-minute download.
|
|
39
|
+
|
|
3
40
|
## 1.2.2
|
|
4
41
|
|
|
5
42
|
Streams assistant tokens as they arrive, on-device and over the cloud.
|
|
@@ -195,4 +232,4 @@ ACP and editor mode work on Windows. The part that is still missing is the inter
|
|
|
195
232
|
|
|
196
233
|
---
|
|
197
234
|
|
|
198
|
-
*© 2026 [
|
|
235
|
+
*© 2026 [Splitfire AB](https://5mb.app) ([siGit Code & Deploy](https://sigit.si)).*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CLAUDE.md
|
|
2
2
|
|
|
3
|
-
This file provides guidance to
|
|
3
|
+
This file provides guidance to AI coding agents when working with code in this repository.
|
|
4
4
|
|
|
5
5
|
## What this is
|
|
6
6
|
|
|
@@ -17,6 +17,25 @@ is a TTY:
|
|
|
17
17
|
Before the TTY/ACP split, `main` also dispatches the account subcommands `sigit login`,
|
|
18
18
|
`sigit logout`, `sigit whoami` (see `src/main.rs` `main()`).
|
|
19
19
|
|
|
20
|
+
## Working in this repo
|
|
21
|
+
|
|
22
|
+
**IMPORTANT — branch naming:** Name every working branch after the *changes it contains*, not
|
|
23
|
+
after a task, ticket, or session id. Use a short, descriptive, kebab-case slug so the branch is
|
|
24
|
+
self-explanatory from its name alone (e.g. `claude/agent-tools-multiedit-glob-todos-remember`,
|
|
25
|
+
not `claude/task-q003hm`).
|
|
26
|
+
|
|
27
|
+
**IMPORTANT — pull request target:** Always open pull requests against the `development` branch,
|
|
28
|
+
never `main`. `main` is release-only; `development` is where day-to-day work integrates.
|
|
29
|
+
|
|
30
|
+
**IMPORTANT — run CI before pushing:** Run the full CI gate locally and confirm it is green
|
|
31
|
+
*before* pushing a branch or opening a pull request — never push work that fails these:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
cargo fmt -- --check # formatting
|
|
35
|
+
cargo clippy --tests -- -D warnings # lint (warnings are errors)
|
|
36
|
+
cargo test --locked # tests
|
|
37
|
+
```
|
|
38
|
+
|
|
20
39
|
## Build / test / lint
|
|
21
40
|
|
|
22
41
|
```sh
|
|
@@ -62,8 +81,34 @@ feeds results back. Neither the loop nor ACP/TUI surfaces depend on a concrete b
|
|
|
62
81
|
wins: (1) override via `OPENAI_BASE_URL`+`OPENAI_API_KEY` or active profile in
|
|
63
82
|
`~/.config/sigit/providers.toml`; (2) siGit Code Cloud when logged in; (3) on-device.
|
|
64
83
|
- **`src/tools.rs`** — agent tool schemas + execution: `read_file`, `create_directory`,
|
|
65
|
-
`list_directory`, `search_files`, `read_website`, `create_file`, `edit_file`,
|
|
66
|
-
`run_command`. Add a tool in both the
|
|
84
|
+
`list_directory`, `search_files`, `glob`, `read_website`, `create_file`, `edit_file`,
|
|
85
|
+
`multi_edit`, `delete_file`, `run_command`, `write_todos`, `remember`. Add a tool in both the
|
|
86
|
+
spec list (`all_tools`) and the execute `match` (`execute_tool`).
|
|
87
|
+
- **`src/skills.rs`** — [Agent Skills](https://agentskills.io) support. Discovers skill
|
|
88
|
+
folders (each with a `SKILL.md`: YAML frontmatter `name` + `description`, then Markdown
|
|
89
|
+
instructions) from `.sigit/skills/` and `.claude/skills/` in the cwd, `$SIGIT_CONFIG_DIR/skills/`,
|
|
90
|
+
and `~/.claude/skills/`. Progressive disclosure: the discovery list (name + description) is
|
|
91
|
+
baked into the dynamically-built `skill` tool's description, and activating a skill (the model
|
|
92
|
+
calls `skill` with a name) loads the full `SKILL.md` body. The `skill` tool is appended in the
|
|
93
|
+
`*_as_specs`/`build_tool_specs` layer (not in `all_tools()`) so its description can be dynamic,
|
|
94
|
+
and only when at least one skill exists.
|
|
95
|
+
- **`src/mcp.rs`** — [Model Context Protocol](https://modelcontextprotocol.io) *client*. Connects to
|
|
96
|
+
MCP servers over the **Streamable HTTP** transport (one JSON-RPC POST endpoint; replies are
|
|
97
|
+
`application/json` or SSE), runs the `initialize`/`tools/list` handshake, and forwards `tools/call`.
|
|
98
|
+
Discovery is best-effort at startup (`mcp::init`, called from both branches of `main()`) and cached
|
|
99
|
+
in a process-global so the synchronous spec builders (`mcp::tool_specs`) and the async dispatch
|
|
100
|
+
(`mcp::call_tool`) can both read it. Tools are namespaced `mcp__<server>__<tool>`, appended in the
|
|
101
|
+
`*_as_specs`/`build_tool_specs` layer and routed in `tools::execute_tool` via `mcp::is_mcp_tool`. The
|
|
102
|
+
official server (`<cloud>/mcp`, default `https://sigit.si/api/v1/mcp`) is baked in and authed with the
|
|
103
|
+
cloud session token; extra servers live in `mcp.toml` (global `$SIGIT_CONFIG_DIR/mcp.toml` and
|
|
104
|
+
project-local `.sigit/mcp.toml`). stdio transport is not supported.
|
|
105
|
+
- **`src/instructions.rs`** — project instruction files, the always-on counterpart to skills.
|
|
106
|
+
Reads `AGENTS.md` (the cross-tool [agents.md](https://agents.md) standard) and `CLAUDE.md`,
|
|
107
|
+
walking from the session cwd up to the repo root (nearest ancestor with `.git`, never above it),
|
|
108
|
+
plus a global file under `$SIGIT_CONFIG_DIR`. Files are ordered outermost-first so the deepest
|
|
109
|
+
(most specific) wins. The combined block is injected via `session_context_message` in `main.rs`
|
|
110
|
+
— pushed as a system message at every ACP session entry point (new/load/fork + model switch)
|
|
111
|
+
and appended to the system prompt on the cloud and TUI-startup paths.
|
|
67
112
|
- **`src/chat.rs`** — the Unix-only ratatui TUI. Loading-spinner phase then chat; uses
|
|
68
113
|
`tokio::select!` to multiplex terminal events with streaming tokens.
|
|
69
114
|
- **`src/setup.rs`** — model cache location, local model discovery, selected-model persistence.
|
|
@@ -74,9 +119,9 @@ feeds results back. Neither the loop nor ACP/TUI surfaces depend on a concrete b
|
|
|
74
119
|
- **`src/credentials.rs`** — local session-token store (TOML, `0600` on Unix).
|
|
75
120
|
- **`src/models.rs`** — model-picker types shared across platforms.
|
|
76
121
|
|
|
77
|
-
Slash commands (`/help`, `/models`, `/login`, `/logout`, `/whoami`, `/reload`,
|
|
78
|
-
`/status`) are advertised via `advertise_commands` in `main.rs` and handled in both the
|
|
79
|
-
ACP sessions.
|
|
122
|
+
Slash commands (`/help`, `/models`, `/skills`, `/mcp`, `/login`, `/logout`, `/whoami`, `/reload`,
|
|
123
|
+
`/clear`, `/status`) are advertised via `advertise_commands` in `main.rs` and handled in both the
|
|
124
|
+
TUI and ACP sessions.
|
|
80
125
|
|
|
81
126
|
## Model cache (macOS)
|
|
82
127
|
|
|
@@ -96,7 +141,8 @@ verbosity with `RUST_LOG`.
|
|
|
96
141
|
|
|
97
142
|
`OPENAI_BASE_URL` / `OPENAI_API_KEY` (provider override), `SIGIT_API_URL` (account API base,
|
|
98
143
|
default `https://sigit.si`), `SIGIT_CLOUD_URL`, `SIGIT_CONFIG_DIR` (default `~/.config/sigit`),
|
|
99
|
-
`SIGIT_MODEL`, `
|
|
144
|
+
`SIGIT_MODEL`, `SIGIT_MCP` (`off` disables MCP), `SIGIT_MCP_OFFICIAL` (`off` drops the baked-in
|
|
145
|
+
server), `HF_HOME` / `HF_HUB_CACHE`, `RUST_LOG`.
|
|
100
146
|
|
|
101
147
|
## Releasing
|
|
102
148
|
|
|
@@ -20,9 +20,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
|
20
20
|
|
|
21
21
|
[[package]]
|
|
22
22
|
name = "agent-client-protocol"
|
|
23
|
-
version = "0.
|
|
23
|
+
version = "1.0.1"
|
|
24
24
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
25
|
-
checksum = "
|
|
25
|
+
checksum = "16302d16c7531355db16593d99c38c8297db0c4653aa7dd80c3556bb17f4cd8c"
|
|
26
26
|
dependencies = [
|
|
27
27
|
"agent-client-protocol-derive",
|
|
28
28
|
"agent-client-protocol-schema",
|
|
@@ -30,7 +30,6 @@ dependencies = [
|
|
|
30
30
|
"blocking",
|
|
31
31
|
"futures",
|
|
32
32
|
"futures-concurrency",
|
|
33
|
-
"jsonrpcmsg",
|
|
34
33
|
"rustc-hash 2.1.2",
|
|
35
34
|
"schemars 1.2.1",
|
|
36
35
|
"serde",
|
|
@@ -38,13 +37,14 @@ dependencies = [
|
|
|
38
37
|
"shell-words",
|
|
39
38
|
"tracing",
|
|
40
39
|
"uuid 1.23.3",
|
|
40
|
+
"windows-sys 0.61.2",
|
|
41
41
|
]
|
|
42
42
|
|
|
43
43
|
[[package]]
|
|
44
44
|
name = "agent-client-protocol-derive"
|
|
45
|
-
version = "0.
|
|
45
|
+
version = "1.0.1"
|
|
46
46
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
47
|
-
checksum = "
|
|
47
|
+
checksum = "88b37d552feb6981a0109febda6b71fc723678cd065974c2d76279c19c407095"
|
|
48
48
|
dependencies = [
|
|
49
49
|
"quote",
|
|
50
50
|
"syn 2.0.117",
|
|
@@ -52,9 +52,9 @@ dependencies = [
|
|
|
52
52
|
|
|
53
53
|
[[package]]
|
|
54
54
|
name = "agent-client-protocol-schema"
|
|
55
|
-
version = "
|
|
55
|
+
version = "1.1.0"
|
|
56
56
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
57
|
-
checksum = "
|
|
57
|
+
checksum = "ac542aba230234b1591ace7286a47c0514fe3efc3037d43296bde31ba7ee5728"
|
|
58
58
|
dependencies = [
|
|
59
59
|
"anyhow",
|
|
60
60
|
"derive_more",
|
|
@@ -2879,16 +2879,6 @@ dependencies = [
|
|
|
2879
2879
|
"wasm-bindgen",
|
|
2880
2880
|
]
|
|
2881
2881
|
|
|
2882
|
-
[[package]]
|
|
2883
|
-
name = "jsonrpcmsg"
|
|
2884
|
-
version = "0.1.2"
|
|
2885
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2886
|
-
checksum = "6d833a15225c779251e13929203518c2ff26e2fe0f322d584b213f4f4dad37bd"
|
|
2887
|
-
dependencies = [
|
|
2888
|
-
"serde",
|
|
2889
|
-
"serde_json",
|
|
2890
|
-
]
|
|
2891
|
-
|
|
2892
2882
|
[[package]]
|
|
2893
2883
|
name = "lazy_static"
|
|
2894
2884
|
version = "1.5.0"
|
|
@@ -5210,7 +5200,7 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
|
5210
5200
|
|
|
5211
5201
|
[[package]]
|
|
5212
5202
|
name = "sigit"
|
|
5213
|
-
version = "1.
|
|
5203
|
+
version = "1.3.1"
|
|
5214
5204
|
dependencies = [
|
|
5215
5205
|
"agent-client-protocol",
|
|
5216
5206
|
"anyhow",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "sigit"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.3.1"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
description = "siGit Code — ACP-compatible AI coding agent. Sí, git."
|
|
6
6
|
documentation = "https://github.com/getsigit/sigit"
|
|
@@ -18,7 +18,7 @@ path = "src/main.rs"
|
|
|
18
18
|
|
|
19
19
|
[dependencies]
|
|
20
20
|
# ACP protocol SDK
|
|
21
|
-
agent-client-protocol = { version = "0
|
|
21
|
+
agent-client-protocol = { version = "1.0", features = ["unstable_session_fork", "unstable_auth_methods"] }
|
|
22
22
|
|
|
23
23
|
# Onde Inference engine (local LLM)
|
|
24
24
|
# onde = { path = "../onde" }
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
that a file or directory name be given on the same line as the
|
|
176
176
|
copyright notice for easier identification within third-party archives.
|
|
177
177
|
|
|
178
|
-
Copyright 2026
|
|
178
|
+
Copyright 2026 Splitfire AB (siGit Code & Deploy)
|
|
179
179
|
|
|
180
180
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
181
181
|
you may not use this file except in compliance with the License.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sigit-code
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -111,5 +111,5 @@ This package ships a prebuilt binary. The source code lives at [github.com/getsi
|
|
|
111
111
|
|
|
112
112
|
## Copyright
|
|
113
113
|
|
|
114
|
-
© 2026 [
|
|
114
|
+
© 2026 [Splitfire AB](https://5mb.app) ([siGit Code & Deploy](https://sigit.si)).
|
|
115
115
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Example Agent Skills
|
|
2
|
+
|
|
3
|
+
siGit Code supports the open [Agent Skills](https://agentskills.io) format. A
|
|
4
|
+
skill is a folder containing a `SKILL.md` file — YAML frontmatter (`name` and
|
|
5
|
+
`description`, at minimum) followed by Markdown instructions. Skills can bundle
|
|
6
|
+
`scripts/`, `references/`, and `assets/` that the agent reads on demand.
|
|
7
|
+
|
|
8
|
+
## Installing a skill
|
|
9
|
+
|
|
10
|
+
Copy a skill folder into one of the directories siGit scans (in priority order):
|
|
11
|
+
|
|
12
|
+
- `.sigit/skills/` or `.claude/skills/` in your project (project-local)
|
|
13
|
+
- `~/.config/sigit/skills/` (honours `$SIGIT_CONFIG_DIR`)
|
|
14
|
+
- `~/.claude/skills/` (shared with the broader ecosystem)
|
|
15
|
+
|
|
16
|
+
For example, to install the `commit-message` skill here for the current project:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
mkdir -p .sigit/skills
|
|
20
|
+
cp -R examples/skills/commit-message .sigit/skills/
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The folder name must match the skill's `name` field.
|
|
24
|
+
|
|
25
|
+
## How siGit uses them
|
|
26
|
+
|
|
27
|
+
siGit follows the spec's *progressive disclosure*:
|
|
28
|
+
|
|
29
|
+
1. **Discovery** — at the start of each turn, siGit loads only each skill's
|
|
30
|
+
`name` and `description` into the `skill` tool's description.
|
|
31
|
+
2. **Activation** — when your task matches a skill, the agent calls the `skill`
|
|
32
|
+
tool with that name, which loads the full `SKILL.md` into context.
|
|
33
|
+
3. **Execution** — the agent follows the instructions, reading any bundled files
|
|
34
|
+
from the skill's directory with its normal file and command tools.
|
|
35
|
+
|
|
36
|
+
Run `/skills` to list the skills siGit can see.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: commit-message
|
|
3
|
+
description: Write a clear git commit message from staged changes. Use when the user asks to commit, write a commit message, or describe staged changes.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: sigit
|
|
7
|
+
version: "1.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Commit message
|
|
11
|
+
|
|
12
|
+
Write a concise, conventional commit message that describes *why* a change was
|
|
13
|
+
made, not just what changed.
|
|
14
|
+
|
|
15
|
+
## Steps
|
|
16
|
+
|
|
17
|
+
1. Inspect what is staged: run `git diff --cached` (and `git status` for context).
|
|
18
|
+
2. Group the changes into a single logical intent. If they span unrelated
|
|
19
|
+
concerns, say so and suggest splitting the commit.
|
|
20
|
+
3. Write the message:
|
|
21
|
+
- **Subject line**: imperative mood, lowercase after the type, no trailing
|
|
22
|
+
period, ≤ 50 characters. Prefix with a type when it fits the repo's
|
|
23
|
+
convention (`feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:`).
|
|
24
|
+
- **Body** (optional): wrap at 72 columns. Explain the motivation and any
|
|
25
|
+
non-obvious tradeoffs. Reference issues if relevant.
|
|
26
|
+
4. Show the message to the user before committing. Only run `git commit` if they
|
|
27
|
+
confirm.
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
Good subject lines:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
fix: stop the picker from reloading a working model on /reload
|
|
35
|
+
refactor: extract skill discovery into its own module
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Avoid:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Update files
|
|
42
|
+
fixed bug
|
|
43
|
+
WIP
|
|
44
|
+
```
|