Skip to content

Commit 35b3fc9

Browse files
refactor(skills): cut style, philosophy, and typescript to five rules each
1 parent 66a1ae8 commit 35b3fc9

12 files changed

Lines changed: 33 additions & 1081 deletions

File tree

‎AGENTS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
## Before You Start
66

7-
Load the `style` and `philosophy` skills. Confirm working-tree status (`git status`) and run `git log --oneline -5`. When the task touches the agent loop, directors, tools, or prompts, read the relevant doc in `/docs` before writing code.
7+
Confirm working-tree status (`git status`) and run `git log --oneline -5`. When the task touches the agent loop, directors, tools, or prompts, read the relevant doc in `/docs` before writing code.
88

99
New contributors: configure git hooks and verify the environment before the first commit.
1010

‎docs/PLUGINS.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,11 @@ shape.
270270
and optional `skills/<name>/SKILL.md` needs no `index.ts`; `loadDataOnlyAgentPlugin`
271271
synthesizes the same `agentPlugin` shape after frontmatter validation.
272272
- **Skill refs on agent frontmatter / body.** A skill name is either:
273-
- **Bare** — `style`, `philosophy`, or a namespaced `plugin:style`. Resolved by
273+
- **Bare** — `typescript`, `plan`, or a namespaced `plugin:typescript`. Resolved by
274274
searching the plugin's `skills/` dir first, then project-local fallbacks
275275
(`.agents/skills`, `.claude/skills`, `.codex/skills`). Prefer bare names for
276276
co-located skills; they are the portable, discoverable form.
277-
- **Path-like** — `./skills/style`, `skills/style`, `../sibling-skill`, or any
277+
- **Path-like** — `./skills/typescript`, `skills/typescript`, `../sibling-skill`, or any
278278
ref containing `/` (including a trailing `SKILL.md`). Resolved only under the
279279
plugin root (`pluginRoot`), with lexical containment plus a realpath check so
280280
a symlink under the root cannot escape. Absolute paths, bare `.` / `..`, and
@@ -331,7 +331,7 @@ shape.
331331
`resolveSkillBody`), so the model does not auto-suggest background libraries.
332332
First-party recipes that are not operator slashes remain listed for
333333
`skill_search` / `use_skill` when they only set `user-invocable: false`
334-
(`style`, `philosophy`, `typescript`). Background libs such as `git-worktrees` set both flags: not a
334+
(`typescript`). Background libs such as `git-worktrees` set both flags: not a
335335
slash and not listed by `skill_search`/`discoverSkills`, but still loadable
336336
by explicit `use_skill`/`resolveSkillBody` name. The slash
337337
command is a direct user entry point on top.

‎docs/PRODUCT.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ the file path and parse details.
107107

108108
The TUI has an extensible slash-command framework. Built-ins include `/help` (shortcut + command overlay), `/model` (models-only picker for connected accounts; **Alt+A** or `/connect` adds a provider), `/settings`, `/permissions`, `/plugins`, `/clear`, `/new`, `/compact` (fold conversation context now, optional trailing instructions to the summarizer; does not wait for the 60% occupancy governor; idle success shows the fold and does not start a new turn), `/mcp` (enable, disable, or remove servers), `/handoff [optional instructions]` (folds context through the shared operator pipeline, then immediately starts the next turn with the instructions as the inbound content — default copy when omitted; unlike `/compact`, which stops after the fold, handoff always re-infers, so the operator can pivot goals without `/clear`; a handoff issued mid-tool-batch queues behind the in-flight batch and whichever boundary fires first runs the single fold), and `/yolo` (`/yolo [on|off|toggle]`, bare `/yolo` toggles), plus a `/<name>` command per available workflow. `/yolo` persists skip-permissions to the active settings file. That file is the user-global `~/.corbits/settings.json` by default, making the setting machine-wide; explicit `--config <path>` selects a different active file, and `/yolo` writes that file. An ordinary TUI launch without the same `--config` returns to the user-global source and does not modify the custom file. `--dangerously-skip-permissions` and `--yolo` are process-only aliases. Secret-guard and authz still apply. When a session starts with its active persisted setting already on, the TUI and `corbits exec` warn that permission prompts are disabled by saved settings at the active settings path and direct the operator to edit that file to re-enable them. Plugins can register additional commands.
109109

110-
**Default skills** exist out of the gate as first-party slash **actions**, not director names: `/implement`, `/plan`, `/refactor`, `/review`, `/pull-request`, `/issue`, `/docs`, `/interview`. Each one is a how-to playbook — the slash sends the skill body to the primary, which follows the steps. Skills do not assign identity or route the fleet; that stays on director system prompts. `/review` classifies the target first, then dispatches a selected fleet; `/pull-request` finds or opens the PR for the current branch, and `/review` takes a PR target and reviews it from a worktree; `/docs` is how to maintain PRODUCT / ARCHITECTURE / IMPLEMENTATION; `/implement` takes a plan and a ticket to a pushed branch (worktree, per-commit planner/build/reviewer loop, whole-branch review, push, hand off to `/pull-request`) — it does not steal planning from `/plan`. Substantial Builder work consumes a counsel / `/plan` plan first; tiny parent-DIY stays plan-optional. `/plan` authors an eng change plan (files, AC, non-goals, risks, ordered steps) and does not implement. `/issue` finds or creates the tracker issue: Linear MCP when available; otherwise it `ask_operator`s for the platform (GitHub etc.) and persists `Preferred issue tracker` in `.corbits/MEMORY.md` (GitHub via `gh issue create`). There is no first-party dispatch skill — Skywalker orchestrates natively. `style`, `philosophy`, and `typescript` stay `use_skill` only (`user-invocable: false`); `git-worktrees` is a background library that is not listed for `use_skill`. Draper and emil are not slashes; they remain closed directors via `spawn_agent(agent=…)`. There is no catch-all worker. Slash names are also available to the model via `skill_search` (descriptions) then `use_skill` (body). Disable the catalog in `/plugins` (`corbits-skills`) if you want them gone.
110+
**Default skills** exist out of the gate as first-party slash **actions**, not director names: `/implement`, `/plan`, `/refactor`, `/review`, `/pull-request`, `/issue`, `/docs`, `/interview`. Each one is a how-to playbook — the slash sends the skill body to the primary, which follows the steps. Skills do not assign identity or route the fleet; that stays on director system prompts. `/review` classifies the target first, then dispatches a selected fleet; `/pull-request` finds or opens the PR for the current branch, and `/review` takes a PR target and reviews it from a worktree; `/docs` is how to maintain PRODUCT / ARCHITECTURE / IMPLEMENTATION; `/implement` takes a plan and a ticket to a pushed branch (worktree, per-commit planner/build/reviewer loop, whole-branch review, push, hand off to `/pull-request`) — it does not steal planning from `/plan`. Substantial Builder work consumes a counsel / `/plan` plan first; tiny parent-DIY stays plan-optional. `/plan` authors an eng change plan (files, AC, non-goals, risks, ordered steps) and does not implement. `/issue` finds or creates the tracker issue: Linear MCP when available; otherwise it `ask_operator`s for the platform (GitHub etc.) and persists `Preferred issue tracker` in `.corbits/MEMORY.md` (GitHub via `gh issue create`). There is no first-party dispatch skill — Skywalker orchestrates natively. `typescript` stays `use_skill` only (`user-invocable: false`); `git-worktrees` is a background library that is not listed for `use_skill`. Draper and emil are not slashes; they remain closed directors via `spawn_agent(agent=…)`. There is no catch-all worker. Slash names are also available to the model via `skill_search` (descriptions) then `use_skill` (body). Disable the catalog in `/plugins` (`corbits-skills`) if you want them gone.
111111

112112
Providers are **models-first**: there is no standalone `/login` command. `/model` opens a **models-only list** (Recent, Favorites, then connected provider/model rows) — type-to-filter owns printable keys, so Connect is never a bare letter. **Alt+A** or `/connect` opens a dedicated add-provider selector over every first-class kind (OpenAI dual-path ChatGPT OAuth or API key, xAI, OpenCode Zen, Anthropic, Google, OpenCode Go, Z.AI Coding Plan, Ollama, Custom), each annotated with its live account count and never filtered out for “already connected.” **Alt+F** toggles favorite on the highlighted model. **Alt+D** persists the highlighted pair as the default without switching the live session. Advanced provider drill-down (edit/delete/tiers) stays on the advanced surface, not a bare printable key while the model list is filtering. OAuth providers open their existing browser login with a named account step so multiple accounts per kind coexist (`codex/work`, …). API-key providers use the same named-instance step before the key (auth-only form: instance name + key + fixed catalog base URL), so personal and team keys land as distinct catalog rows (`openai/default`, `anthropic/work`, …); reusing a name re-keys that instance after confirm. Custom remains a free-form single endpoint (full manual form). Successful connect refreshes the catalog and reopens the model list focused on the new account’s default model. OpenCode Go lists models from the live `/zen/go/v1/models` catalog (packaged seed on fetch failure), routes each by its protocol metadata (chat completions, OpenAI responses, or Anthropic messages) and can show subscription usage in the status bar when active (rolling 5h / weekly / monthly windows when the usage API responds; omitted on auth or network failure). When Go returns a quota or rate-limit error — including some HTTP 400 responses that carry limit payloads — Corbits classifies them so quota aborts cleanly and short provider rate limits remain retryable. On a free-tier or subscription quota hit, wait for the window to reset or use OpenCode Zen free models.
113113

‎docs/TELEMETRY.md‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ director ids from `DIRECTOR_IDS` (and the legacy `worker` alias) are reported
8181
by id; project-defined or marketplace profile ids become `custom`.
8282
`skill_used` carries `skill_name`: a first-party skill name reportable by
8383
name from the closed `corbits-skills` allowlist in `src/telemetry/classify.ts`
84-
(the slash workflows plus `git-worktrees`, `philosophy`, `style`,
85-
`typescript`), or `custom` for anything else, including bundled background
84+
(the slash workflows plus `git-worktrees`, `typescript`), or `custom` for anything else, including bundled background
8685
skills outside the list. Unknown, project-local, and plugin-authored skill
8786
names are never transmitted; `skill_name` is the only identifying-adjacent
8887
property the event can carry.

‎plugins/corbits-skills/skills/philosophy/SKILL.md‎

Lines changed: 0 additions & 114 deletions
This file was deleted.

‎plugins/corbits-skills/skills/refactor/SKILL.md‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ Use this skill to analyze existing code, produce a structured design document, a
1212

1313
Requires a git repo. Run `git rev-parse --show-toplevel`; if it fails, stop and tell the operator to `git init` first. Work in a worktree from `origin/<default-branch>`, never in the main checkout: `use_skill("git-worktrees")` for the commands.
1414

15-
## Initialization
16-
17-
Before doing anything else, load the `philosophy` skill. The principles in that skill guide how you evaluate design decisions.
18-
1915
## Workflow
2016

2117
### Step 1: Understand the Scope
@@ -60,7 +56,7 @@ Document structure:
6056
After documenting the current state:
6157

6258
1. Present your observations and ask the user about their priorities
63-
2. Propose specific improvements with rationale grounded in philosophy principles (pragmatic, simple over easy, etc.)
59+
2. Propose specific improvements with rationale grounded in the principles below (pragmatic, simple over easy, etc.)
6460
3. Let the user accept, reject, or modify proposals
6561
4. Ask follow-up questions to refine the approach
6662
5. Iterate until alignment is reached
@@ -81,7 +77,6 @@ A single markdown file in the user's current working directory containing both t
8177

8278
## Guiding Principles
8379

84-
From the philosophy skill:
8580
- **Pragmatic over idealistic** - Don't propose changes for theoretical purity
8681
- **Simple is usually harder than easy** - Favor designs that are genuinely simple, not just quick
8782
- **Do no harm** - Consider risks to stability and correctness

0 commit comments

Comments
 (0)