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.
Files changed (53) hide show
  1. {sigit_code-1.2.2 → sigit_code-1.3.1}/CHANGELOG.md +38 -1
  2. {sigit_code-1.2.2 → sigit_code-1.3.1}/CLAUDE.md +53 -7
  3. {sigit_code-1.2.2 → sigit_code-1.3.1}/Cargo.lock +8 -18
  4. {sigit_code-1.2.2 → sigit_code-1.3.1}/Cargo.toml +2 -2
  5. {sigit_code-1.2.2 → sigit_code-1.3.1}/LICENSE +1 -1
  6. {sigit_code-1.2.2 → sigit_code-1.3.1}/PKG-INFO +2 -2
  7. {sigit_code-1.2.2 → sigit_code-1.3.1}/README.md +1 -1
  8. sigit_code-1.3.1/examples/skills/README.md +36 -0
  9. sigit_code-1.3.1/examples/skills/commit-message/SKILL.md +44 -0
  10. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/README.md +1 -1
  11. {sigit_code-1.2.2 → sigit_code-1.3.1}/pypi/README.md +1 -1
  12. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/chat.rs +308 -80
  13. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/credentials.rs +3 -0
  14. sigit_code-1.3.1/src/instructions.rs +261 -0
  15. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/main.rs +380 -111
  16. sigit_code-1.3.1/src/mcp.rs +954 -0
  17. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/models.rs +35 -2
  18. sigit_code-1.3.1/src/settings.rs +153 -0
  19. sigit_code-1.3.1/src/skills.rs +613 -0
  20. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/tools.rs +785 -33
  21. {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/AGENTS.md +0 -0
  22. {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/agent-client-protocol/SKILL.md +0 -0
  23. {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/ai-assisted-coding/SKILL.md +0 -0
  24. {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/branding/SKILL.md +0 -0
  25. {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/sigit-code-release/SKILL.md +0 -0
  26. {sigit_code-1.2.2 → sigit_code-1.3.1}/.agents/skills/tool-calling/SKILL.md +0 -0
  27. {sigit_code-1.2.2 → sigit_code-1.3.1}/.claude/skills/run-sigit/SKILL.md +0 -0
  28. {sigit_code-1.2.2 → sigit_code-1.3.1}/.claude/skills/run-sigit/driver.mjs +0 -0
  29. {sigit_code-1.2.2 → sigit_code-1.3.1}/.claude/skills/run-sigit/tui-smoke.sh +0 -0
  30. {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/ci.yml +0 -0
  31. {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-crates.yml +0 -0
  32. {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-github.yml +0 -0
  33. {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-homebrew.yml +0 -0
  34. {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-npm.yml +0 -0
  35. {sigit_code-1.2.2 → sigit_code-1.3.1}/.github/workflows/release-pypi.yml +0 -0
  36. {sigit_code-1.2.2 → sigit_code-1.3.1}/.gitignore +0 -0
  37. {sigit_code-1.2.2 → sigit_code-1.3.1}/.nvmrc +0 -0
  38. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/README.md.tmpl +0 -0
  39. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/package-main.json.tmpl +0 -0
  40. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/package.json.tmpl +0 -0
  41. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/scripts/render-main-package.cjs +0 -0
  42. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/scripts/render-platform-package.cjs +0 -0
  43. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/.gitignore +0 -0
  44. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/package.json +0 -0
  45. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/src/index.ts +0 -0
  46. {sigit_code-1.2.2 → sigit_code-1.3.1}/npm/sigit/tsconfig.json +0 -0
  47. {sigit_code-1.2.2 → sigit_code-1.3.1}/pypi/pyproject.toml +0 -0
  48. {sigit_code-1.2.2 → sigit_code-1.3.1}/pyproject.toml +0 -0
  49. {sigit_code-1.2.2 → sigit_code-1.3.1}/rust-toolchain.toml +0 -0
  50. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/account.rs +0 -0
  51. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/backend.rs +0 -0
  52. {sigit_code-1.2.2 → sigit_code-1.3.1}/src/provider.rs +0 -0
  53. {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 [smbCloud](https://smbcloud.xyz/) (Splitfire AB).*
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 Claude Code (claude.ai/code) when working with code in this repository.
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`, `delete_file`,
66
- `run_command`. Add a tool in both the spec list and the execute `match`.
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`, `/clear`,
78
- `/status`) are advertised via `advertise_commands` in `main.rs` and handled in both the TUI and
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`, `HF_HOME` / `HF_HUB_CACHE`, `RUST_LOG`.
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.13.0"
23
+ version = "1.0.1"
24
24
  source = "registry+https://github.com/rust-lang/crates.io-index"
25
- checksum = "e037424fa2da7aea1363b42e0c792d117b4d0ceb9d6d6f58719ce7520c22eabf"
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.11.1"
45
+ version = "1.0.1"
46
46
  source = "registry+https://github.com/rust-lang/crates.io-index"
47
- checksum = "cabdc9d845d08ec7ed2d0c9de1ae4a1b198301407d55855261572761be90ec9f"
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 = "0.13.4"
55
+ version = "1.1.0"
56
56
  source = "registry+https://github.com/rust-lang/crates.io-index"
57
- checksum = "8dd79d476e25d8562d46b368eb5fc629edd3dd6be75e6b036606e6f4f867e7e7"
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.2.2"
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.2.2"
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.13", features = ["unstable_session_fork", "unstable_session_additional_directories", "unstable_auth_methods"] }
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 smbCloud (Splitfire AB)
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.2.2
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 [smbCloud](https://smbcloud.xyz/) (Splitfire AB).
114
+ © 2026 [Splitfire AB](https://5mb.app) ([siGit Code & Deploy](https://sigit.si)).
115
115
 
@@ -117,4 +117,4 @@ Terminal mode currently needs Unix terminal behavior, so it works on macOS and L
117
117
 
118
118
  ## Copyright
119
119
 
120
- © 2026 [smbCloud Platform](https://smbcloud.xyz/) (Splitfire AB).
120
+ © 2026 [Splitfire AB](https://5mb.app) ([siGit Code & Deploy](https://sigit.si)).
@@ -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
+ ```
@@ -101,4 +101,4 @@ Install [ACP Client](https://marketplace.visualstudio.com/items?itemName=formula
101
101
 
102
102
  ## Copyright
103
103
 
104
- © 2026 [smbCloud](https://smbcloud.xyz/) (Splitfire AB).
104
+ © 2026 [Splitfire AB](https://5mb.app) ([siGit Code & Deploy](https://sigit.si)).
@@ -84,4 +84,4 @@ This package ships a prebuilt binary. The source code lives at [github.com/getsi
84
84
 
85
85
  ## Copyright
86
86
 
87
- © 2026 [smbCloud](https://smbcloud.xyz/) (Splitfire AB).
87
+ © 2026 [Splitfire AB](https://5mb.app) ([siGit Code & Deploy](https://sigit.si)).