Skip to content

Commit 39321db

Browse files
committed
docs: reword PATCH.md in Simplified Technical English
Rewrites every entry so an agent that loads PATCH.md as instructions cannot misread it: no semicolons, active voice, sentences of at most 25 words, and one word for one action (remove, not delete). Lists replace sentences with many parts. ste-lint reports 0 violations (was 26, 18 hard). Every command, key, setting and path is unchanged.
1 parent 498e9bf commit 39321db

1 file changed

Lines changed: 50 additions & 41 deletions

File tree

‎PATCH.md‎

Lines changed: 50 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,151 +2,160 @@
22

33
## Skill Auto-Load
44

5-
`auto_load` is a plugin (`custom.skills.auto-load`): configure it with `{ "plugins": [{ "package": "custom.skills.auto-load", "options": { "skills": ["a", "b"] } }] }` to inject those skills into main-session system prompts and omit them from `available_skills`.
5+
The plugin `custom.skills.auto-load` adds named skills to the system prompts of main sessions. It removes those skills from `available_skills`. Configure it with `{ "plugins": [{ "package": "custom.skills.auto-load", "options": { "skills": ["a", "b"] } }] }`.
66

77
## Builtin Plugin Options
88

9-
A `plugins` config entry whose `package` is a builtin plugin id enables it and passes `options` to it. Wildcard entries (`custom.*`) pass no options.
9+
A `plugins` config entry enables a builtin plugin when its `package` is the plugin id. The entry passes `options` to the plugin. Wildcard entries (`custom.*`) pass no options.
1010

1111
## Disabled Workflows
1212

13-
Only `ci` runs on this fork. After merging upstream, run `make disable-workflows` to disable the rest.
13+
Only `ci` runs on this fork. After you merge upstream, run `make disable-workflows`. It disables all other workflows.
1414

1515
## Removed Upstream Custom Tools
1616

17-
Deleted `.opencode/tool/github-pr-search.ts` and `github-triage.ts`: v1-style tools (`import { tool } from "@opencode/plugin"`) that fail to load on v2 and break every prompt run in this repo.
17+
The fork removed `.opencode/tool/github-pr-search.ts` and `github-triage.ts`. These tools use the v1 style (`import { tool } from "@opencode/plugin"`). They fail to load on v2 and break every prompt run in this repo.
1818

1919
## Fork CI Workflow
2020

21-
`ci.yml` is the fork's only workflow: it checks pull requests and pushes to `dev`, and on a push to `dev` builds the CLI and publishes a datever GitHub Release.
21+
`ci.yml` is the only workflow of the fork. It checks pull requests and pushes to `dev`. On a push to `dev`, it builds the CLI and publishes a datever GitHub Release.
2222

2323
## Makefile
2424

25-
`make build-single` builds the single-file `opencode` binary, `make generate` regenerates the protocol, client, and docs, `make tests` runs the fork's tests, and `make git-setup` registers the merge drivers below.
25+
- `make build-single` builds the single-file `opencode` binary.
26+
- `make generate` regenerates the protocol, the client, and the docs.
27+
- `make tests` runs the tests of the fork.
28+
- `make git-setup` registers the merge drivers (see Migration Merge Drivers).
2629

2730
## Migration Merge Drivers
2831

29-
Git merge drivers (`packages/core/script/merge-driver.ts`) resolve `migration.gen.ts` and `schema.json` when upstream adds a migration next to the fork's. Run `make git-setup` once per clone.
32+
The merge drivers in `packages/core/script/merge-driver.ts` resolve `migration.gen.ts` and `schema.json`. They apply when upstream adds a migration next to the migration of the fork. Run `make git-setup` one time in each clone.
3033

3134
## Interrupt-and-Submit Keybind (`prompt_interrupt_submit`)
3235

33-
`ctrl+return` (`prompt_interrupt_submit`) aborts the active run and submits the prompt as a fresh run. It needs the kitty keyboard protocol, and it is no longer a newline key.
36+
`ctrl+return` (`prompt_interrupt_submit`) stops the active run and submits the prompt as a new run. It needs the kitty keyboard protocol. It no longer inserts a newline.
3437

3538
## Click-to-Toggle MCPs in TUI Sidebar
3639

37-
Clicking an MCP in the sidebar enables or disables it. In-flight connections use status `pending` (upstream rename of `connecting`); the web UI still labels it "connecting". V1 servers that emit `connecting` are normalized to `pending` at the load boundary.
40+
Click an MCP in the sidebar to enable or disable it. A connection in progress has the status `pending` (upstream renamed `connecting` to `pending`). The web UI still shows "connecting". V1 servers that send `connecting` become `pending` when the config loads.
3841

3942
## Prompt Stash Defaults
4043

41-
Default keybinds: `ctrl+s` to stash the current prompt, `ctrl+shift+s` to pop the last stashed prompt.
44+
`ctrl+s` stashes the current prompt. `ctrl+shift+s` restores the last stashed prompt.
4245

4346
## Terminal Title Without `OC |` Prefix
4447

45-
Session and plugin terminal titles use the bare title/id (no `OC |` prefix).
48+
Terminal titles of sessions and plugins show the plain title or id. They have no `OC |` prefix.
4649

4750
## Bash Tool Syntax Highlighting (TUI)
4851

49-
Bash/shell tool commands use tree-sitter bash highlighting. The `$ ` marker renders separately so the shell grammar only sees the command.
52+
The TUI highlights commands of the bash and shell tools with tree-sitter bash. The `$ ` marker renders separately, so the shell grammar sees only the command.
5053

5154
## Provider Colorization (TUI)
5255

53-
Each provider gets a stable theme color in the model picker and prompt footer.
56+
Each provider has a stable theme color in the model picker and in the prompt footer.
5457

5558
## Model Keyword Highlights (TUI)
5659

57-
`cli.json` `model_keywords` (case-insensitive regexes) colors matching text in model names in the picker and prompt footer.
60+
The `cli.json` setting `model_keywords` holds case-insensitive regexes. The TUI colors the matching text in model names in the model picker and in the prompt footer.
5861

5962
## Free Badge for Zero-Cost Models (TUI)
6063

61-
Model picker shows a `Free` footer for any model with `cost.input === 0`, not only `opencode` provider models.
64+
The model picker shows a `Free` footer for each model with `cost.input === 0`. This applies to all providers, not only `opencode`.
6265

6366
## Agent Cycle Tab Strip (TUI)
6467

65-
Tab and Shift+Tab cycle agents forward and back, briefly showing a colored list of agents; click one to select it.
68+
Tab selects the next agent. Shift+Tab selects the previous agent. A colored list of agents shows for a short time. Click an agent in the list to select it.
6669

6770
## `/timeouts` Command
6871

69-
Plugin (`custom.shell.timeouts` + TUI `custom.timeouts`): foreground shell commands have no default timeout until `/timeouts` is toggled for the session. Explicit `timeout` on a call still applies; background calls are untouched. Contract in `packages/schema/src/custom-timeouts.ts`.
72+
The plugins `custom.shell.timeouts` and `custom.timeouts` (TUI) remove the default timeout of foreground shell commands. The default timeout returns only after you toggle `/timeouts` for the session. A `timeout` set on a call still applies. Background calls are not affected. The contract is in `packages/schema/src/custom-timeouts.ts`.
7073

7174
## Task Tool Invalid `task_id`
7275

73-
Plugin (`custom.tool.subagent.resume`): a subagent `sessionID` that is not a child of the current session starts a new subagent instead of failing.
76+
The plugin `custom.tool.subagent.resume` starts a new subagent when the `sessionID` is not a child of the current session. Before, the call failed.
7477

7578
## Vertical Tabs Default
7679

77-
Session tabs default to vertical in the TUI (`tabs.layout`) and desktop app (`appearance.tabLayout`).
80+
Session tabs are vertical by default in the TUI (`tabs.layout`) and in the desktop app (`appearance.tabLayout`).
7881

7982
## Vertical Tab Title Wrapping (TUI)
8083

81-
Expanded vertical tab titles word-wrap onto as many rows as they need instead of cropping, and the tab grows to fit; the compact rail and project line still crop.
84+
In the expanded vertical rail, a long tab title wraps onto more rows, and the tab grows to fit. The compact rail and the project line crop the text.
8285

8386
## Vertical Tab Close Mark (TUI)
8487

85-
In the expanded vertical rail, hovering an idle tab turns its `•` into `✕`; click it to close the tab. Horizontal tabs keep upstream's close button.
88+
In the expanded vertical rail, hover over an idle tab to change its `•` to `✕`. Click the `✕` to close the tab. Horizontal tabs keep the close button of upstream.
8689

8790
## Vertical Tab Project Groups (TUI)
8891

89-
The expanded vertical rail groups tabs under project headers and nests child sessions under their parent tab; manual tab reordering is disabled while `tabs.layout` is vertical.
92+
The expanded vertical rail groups tabs under project headers. It nests child sessions under their parent tab. You cannot reorder tabs by hand while `tabs.layout` is vertical.
9093

9194
## Vertical Tab Compact Layout (TUI)
9295

93-
In the expanded vertical rail, a tab shows a second line only when it has a worktree branch, tabs in one project group sit with no gap, and idle tabs show `•`.
96+
In the expanded vertical rail, a tab shows a second line only when it has a worktree branch. Tabs of one project group have no gap between them. Idle tabs show `•`.
9497

9598
## Subagent List Order (TUI)
9699

97-
The vertical tab subtree lists unresolved children (running, pending, permission, or question), the child being viewed, and ancestors of those, oldest-first by `time.created`. The subagent picker lists children oldest-first by `time.created`.
100+
The vertical tab subtree lists these sessions, oldest first by `time.created`:
101+
102+
- unresolved children (running, pending, permission, or question)
103+
- the child that you view
104+
- the ancestors of these sessions
105+
106+
The subagent picker lists all children, oldest first by `time.created`.
98107

99108
## Diff Line Comments (TUI)
100109

101-
Dragging down the line numbers of an in-chat edit, patch or write block picks lines, GitHub style, and sends a comment on them to the session as a prompt.
110+
Drag down the line numbers of an edit, patch, or write block in the chat to select lines, as on GitHub. The TUI sends a comment on the selected lines to the session as a prompt.
102111

103112
## Message Actions Jump (TUI)
104113

105-
Clicking a message hides Jump to in Message Actions. The timeline still shows it.
114+
When you click a message, Message Actions does not show Jump to. The timeline still shows it.
106115

107116
## Session List Preview (TUI) [NOT MIGRATED]
108117

109-
The session list (`<leader>l`) previews the highlighted session's latest messages on terminals 128 columns or wider.
118+
On terminals that are 128 columns or wider, the session list (`<leader>l`) previews the latest messages of the highlighted session.
110119

111120
## Retitle After Compaction
112121

113-
Plugin (`custom.session.retitle`): regenerates a top-level session's title from the compaction summary after every compaction, unless the session was renamed by hand.
122+
The plugin `custom.session.retitle` writes a new title for a top-level session from the compaction summary. It runs after each compaction. It does not run when you renamed the session by hand.
114123

115124
## Skill Mentions Use `/`
116125

117-
Skills are mentioned and autocompleted as `/skill-id` (leading `/` menu in the TUI and app composer) instead of `@skill-id`; `@` stays for files, agents, and references.
126+
Type `/skill-id` to mention a skill. The `/` menu in the TUI and in the app composer completes it. This replaces `@skill-id`. `@` still mentions files, agents, and references.
118127

119128
## Directory Links Open in Sublime Merge (TUI)
120129

121-
Clicking a markdown link to a directory (trailing `/`, e.g. `[core](packages/core/)`) copies its absolute path and runs `smerge` on it; a missing path toasts an error. `make tests` runs the fork tests.
130+
Click a markdown link to a directory (the path ends with `/`, for example `[core](packages/core/)`). The TUI copies the absolute path and runs `smerge` on it. If the path does not exist, the TUI shows an error toast.
122131

123132
## Context Sidebar
124133

125-
Plugin (`custom.context` + TUI `custom.sidebar.context`): the sidebar lists the session's loaded instruction files, loaded skills, and one collapsible node per session root. Clicking a root copies its path.
134+
The plugins `custom.context` and `custom.sidebar.context` (TUI) fill the sidebar. It lists the instruction files and skills that the session loaded. It also lists one collapsible node for each session root. Click a root to copy its path.
126135

127136
## Pull Request Sidebar
128137

129-
Plugin (`custom.pull-requests` + TUI `custom.sidebar.pull-requests`): the sidebar lists pull requests linked in the chat as `owner/repo#n`; click to open. Add enterprise hosts with the `hosts` plugin option.
138+
The plugins `custom.pull-requests` and `custom.sidebar.pull-requests` (TUI) fill the sidebar. It lists the pull requests that the chat links, as `owner/repo#n`. Click an entry to open it. The plugin option `hosts` adds enterprise hosts.
130139

131140
## Cancel Tool
132141

133-
`cancel` tool: agents cancel a background `shell` or `subagent` they started by passing the shell ID or subagent `sessionID` from its `background: true` result (which now names the id); jobs owned by another session are refused.
142+
The `cancel` tool stops a background `shell` or `subagent` that the agent started. The agent passes the shell ID or the `sessionID` from the result of the `background: true` call. The result names this id. The tool refuses jobs that belong to another session.
134143

135-
Plugin (`custom.tool.cancel-hints`): tells the model to use `cancel` in the shell tool's description and background results.
144+
The plugin `custom.tool.cancel-hints` tells the model to use `cancel`. It adds this to the shell tool description and to the background results.
136145

137146
## Session Roots
138147

139-
A session has one working directory plus optional `roots`: extra directories that are in scope like it, with no `external_directory` approval.
148+
A session has one working directory. It can also have `roots`: extra directories that are in scope like the working directory. Access to a root needs no `external_directory` approval.
140149

141-
- Models add and remove roots with `session_root_add` / `session_root_remove` (plugin `custom.session.roots`); the API has `/api/session/:sessionID/root`.
142-
- A root's instruction files and skills load into the session's context.
143-
- Session move is upstream's and works with roots; `session.fork` also takes an optional `directory`.
144-
- In the TUI workspaces dialog, `ctrl+m` moves the session and `ctrl+y` adds a root.
150+
- Models add and remove roots with `session_root_add` and `session_root_remove` (plugin `custom.session.roots`). The API path is `/api/session/:sessionID/root`.
151+
- The instruction files and skills of a root load into the context of the session.
152+
- Session move is the move of upstream. It works with roots. `session.fork` also accepts an optional `directory`.
153+
- In the TUI workspaces dialog, `ctrl+m` moves the session. `ctrl+y` adds a root.
145154

146155
## Session Move Disabled for Models
147156

148-
Plugin (`custom.tool.session-move.disable`): hides the `session_move` tool from models. Users can still move sessions.
157+
The plugin `custom.tool.session-move.disable` hides the `session_move` tool from models. Users can still move sessions.
149158

150159
## Instruction Filenames
151160

152-
Auto-loaded instruction filenames are `InstructionDiscovery.filenames` (`AGENTS.md`, `CLAUDE.local.md`, `AGENTS.local.md`, `PATCH.md`), shared by the startup walk and the read-time walk.
161+
`InstructionDiscovery.filenames` lists the instruction files that load automatically: `AGENTS.md`, `CLAUDE.local.md`, `AGENTS.local.md`, and `PATCH.md`. The walk at startup and the walk at read time use this list.

0 commit comments

Comments
 (0)