diff --git a/README.md b/README.md index 53b8849..caac231 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ something outside your opencode config say so in their description. | `privacy-share-disabled` | Privacy | replace | In the bundle. Sets `share` to "disabled" so opencode never publishes a session, automatically or on command | | `agent-runaway-guard` | Agent | merge | Adds step limits to built-in agents to prevent runaway tool loops | | `default-agent-plan` | Agent | replace | Sets the default agent to "plan" so opencode always starts in plan mode instead of build mode | -| `opencode-planify-german` | Bundle | — | The whole planify setup, which does nothing in parts: the `opencode-planify-german` plugin from npm (pinned to `0.3.2`), registering a `plan_render` tool that validates a plan JSON against a schema and renders a self-contained HTML file to `docs/plans/-.html`; the rules file that makes opencode answer in German with Swiss orthography (never the eszett character, always `ss`) and send every plan through `plan_render`; and the `planify` skill documenting the plan schema. Rules file and skill are fetched sha256-verified. Restart opencode after installing — plugins are resolved at start | +| `opencode-planify-german` | Bundle | — | The whole planify setup, which does nothing in parts: the `opencode-planify-german` plugin from npm (pinned to `0.4.0`), registering a `plan_render` tool that validates a plan JSON against a schema and renders a self-contained HTML file to `docs/plans/-.html`, and a `plan_pr` tool that writes that plan as Markdown into the description of the open Bitbucket Data Center PR of the current branch; the rules file that makes opencode answer in German with Swiss orthography (never the eszett character, always `ss`) and send every plan through `plan_render`; and the `planify` skill documenting the plan schema. Prompts for the Bitbucket URL and an HTTP access token, stored as plugin options in `opencode.json` (token in plain text; prefer `--set-env bitbucketToken=ENV_VAR`). Rules file and skill are fetched sha256-verified. Restart opencode after installing — plugins are resolved at start | | `skill-diagram-design` | Skill | append | Needs a clone of the repo on disk first — `git clone https://github.com/cathrynlavery/diagram-design ~/src/diagram-design`. Registers the `diagram-design` skill (editorial diagram types as self-contained HTML + SVG) by appending your clone's `skills/` dir to `skills.paths`; answer with that clone's `skills/` dir (`--set skillsDir=/Users/you/src/diagram-design/skills`); the install refuses if the dir is not there. Tracks `main` — the repo ships no tags. One-way: `remove` cannot undo an append preset that prompts, so uninstall by deleting the one `skills.paths` entry by hand | | `tui-disable-mouse` | TUI | replace | Disables TUI mouse capture so native terminal selection and scrolling keep working | diff --git a/presets/instructions-opencode-planify-german.conf b/presets/instructions-opencode-planify-german.conf index 7861560..6302f18 100644 --- a/presets/instructions-opencode-planify-german.conf +++ b/presets/instructions-opencode-planify-german.conf @@ -3,16 +3,16 @@ // `plan_render` tool. Makes opencode answer in German using Swiss // orthography — never the eszett character, always "ss" (ausser, grösser, // heisst) — with real umlauts, plus German code comments. Every plan goes to -// `plan_render` as JSON, never hand-written HTML or Markdown; the ticket key -// comes from the branch name. Appends a rules file to +// `plan_render` as JSON, never hand-written HTML or Markdown; `plan_pr` +// on request. Appends a rules file to // `instructions`, replacing no built-in prompt. // @author: Jan -// @version: 0.3.2 +// @version: 0.4.0 // @part-of: opencode-planify-german // @path: instructions // @mode: append -// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/62caf977134dbe222b087f32e55051a3c6f79aaa/instructions/planify.md -> {{cache}}/opencode-planify-german-rules-0.3.2.md sha256=314ae512eb63c8026aa9a689b5205921020b29452d1c9a27f12046ed49a3008e +// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/2bdeafe3f5b9cb6ddef010157ff0c0f58daf8076/instructions/planify.md -> {{cache}}/opencode-planify-german-rules-0.4.0.md sha256=1f3e1533f20e9cc7ec5ea4d15d2a81861d68e6a4129dea50c2be451326299b68 [ - "{{cache}}/opencode-planify-german-rules-0.3.2.md" + "{{cache}}/opencode-planify-german-rules-0.4.0.md" ] diff --git a/presets/opencode-planify-german.conf b/presets/opencode-planify-german.conf index 1d632c3..73b6100 100644 --- a/presets/opencode-planify-german.conf +++ b/presets/opencode-planify-german.conf @@ -1,12 +1,12 @@ // @name: opencode-planify-german -// @description: Bundle: the whole planify setup — the plugin providing the -// `plan_render` tool, the German rules file that makes every plan go through it, -// and the skill documenting the plan schema. Install all three or the setup is -// inert: the rules alone name a tool that does not exist, the plugin alone is never -// called. Replaces instructions-swiss-rules, which is gone: its language rules live -// in the planify rules file, its hand-written HTML plans do not. +// @description: Bundle: the whole planify setup — the plugin providing +// `plan_render` (plan JSON to HTML) and `plan_pr` (plan into a Bitbucket Data +// Center PR description), the German rules file that routes every plan through +// them, and the skill documenting the plan schema. Asks for the Bitbucket URL and +// an HTTP access token; the token lands in opencode.json in plain text. Install +// all three or the setup is inert. // @author: Jan -// @version: 0.3.2 +// @version: 0.4.0 // @include: plugin-opencode-planify-german // @include: instructions-opencode-planify-german // @include: skill-opencode-planify-german diff --git a/presets/plugin-opencode-planify-german.conf b/presets/plugin-opencode-planify-german.conf index 3aab382..30e884d 100644 --- a/presets/plugin-opencode-planify-german.conf +++ b/presets/plugin-opencode-planify-german.conf @@ -1,15 +1,25 @@ // @name: plugin-opencode-planify-german // @description: Needs instructions-opencode-planify-german too, or nothing tells -// the agent to use the tool — install the opencode-planify-german bundle for -// both. Adds the opencode-planify-german plugin from npm, pinned to 0.3.2, which -// registers `plan_render`: takes a plan as JSON, validates it against a schema, -// renders a self-contained HTML file to docs/plans/-.html and opens -// it. Restart opencode afterwards — plugins resolve at start. +// the agent to use the tools — install the opencode-planify-german bundle. Adds +// the opencode-planify-german plugin from npm, pinned to 0.4.0: `plan_render` +// renders a plan JSON to docs/plans/*.html, `plan_pr` writes it as Markdown into +// a Bitbucket Data Center PR description. URL and token go into opencode.json as +// plugin options, the token in plain text. Restart opencode afterwards. // @author: Jan -// @version: 0.3.2 +// @version: 0.4.0 // @part-of: opencode-planify-german // @path: plugin // @mode: append -// @pins: opencode-planify-german 0.3.2 +// @pins: opencode-planify-german 0.4.0 +// @prompt: bitbucketUrl | text | Bitbucket Data Center base URL (e.g. https://bitbucket.example.com) +// @prompt: bitbucketToken | secret | Bitbucket HTTP access token, used by plan_pr to edit PR descriptions -["opencode-planify-german@0.3.2"] +[ + [ + "opencode-planify-german@0.4.0", + { + "bitbucketUrl": "{{prompt:bitbucketUrl}}", + "bitbucketToken": "{{prompt:bitbucketToken}}" + } + ] +] diff --git a/presets/skill-opencode-planify-german.conf b/presets/skill-opencode-planify-german.conf index c29eac0..bbdd381 100644 --- a/presets/skill-opencode-planify-german.conf +++ b/presets/skill-opencode-planify-german.conf @@ -6,14 +6,14 @@ // sha256-verified, and appends that directory to `skills.paths` — no clone needed. // Uninstall by deleting the entry. // @author: Jan -// @version: 0.3.2 +// @version: 0.4.0 // @part-of: opencode-planify-german // @path: skills.paths // @mode: append -// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/62caf977134dbe222b087f32e55051a3c6f79aaa/skills/planify/SKILL.md -> {{cache}}/opencode-planify-german-skills-0.3.2/planify/SKILL.md sha256=de90cc59bf8ffbedb447680a35a4a386ec20d59c91ff9a4fdd2886d28cc78e48 -// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/62caf977134dbe222b087f32e55051a3c6f79aaa/skills/planify/schema/plan.schema.json -> {{cache}}/opencode-planify-german-skills-0.3.2/planify/schema/plan.schema.json sha256=1617c2c2789d2ed2421145049b4a4dbe8614c6ef0e9027b85f31643ca6faee73 -// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/62caf977134dbe222b087f32e55051a3c6f79aaa/skills/planify/references/beispiel-plan.json -> {{cache}}/opencode-planify-german-skills-0.3.2/planify/references/beispiel-plan.json sha256=f4507cf91ed84c54b323dede8050dcf9c15dfdb5ca9f6f1b78a2c1f6b4036bc3 +// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/2bdeafe3f5b9cb6ddef010157ff0c0f58daf8076/skills/planify/SKILL.md -> {{cache}}/opencode-planify-german-skills-0.4.0/planify/SKILL.md sha256=1888e569c7ceaf8364e72e094ef3755e517117bb6fd2baff89c3162ac03cb2a1 +// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/2bdeafe3f5b9cb6ddef010157ff0c0f58daf8076/skills/planify/schema/plan.schema.json -> {{cache}}/opencode-planify-german-skills-0.4.0/planify/schema/plan.schema.json sha256=1617c2c2789d2ed2421145049b4a4dbe8614c6ef0e9027b85f31643ca6faee73 +// @fetch: https://raw.githubusercontent.com/trick77/opencode-planify-german/2bdeafe3f5b9cb6ddef010157ff0c0f58daf8076/skills/planify/references/beispiel-plan.json -> {{cache}}/opencode-planify-german-skills-0.4.0/planify/references/beispiel-plan.json sha256=f4507cf91ed84c54b323dede8050dcf9c15dfdb5ca9f6f1b78a2c1f6b4036bc3 [ - "{{cache}}/opencode-planify-german-skills-0.3.2" + "{{cache}}/opencode-planify-german-skills-0.4.0" ] diff --git a/test/builtin-presets.test.ts b/test/builtin-presets.test.ts index 9de70fb..9549f71 100644 --- a/test/builtin-presets.test.ts +++ b/test/builtin-presets.test.ts @@ -200,7 +200,7 @@ test('records the pinned third-party version of every preset that installs one', 'jdtls-lombok': [{ name: 'lombok', version: '1.18.48' }], 'mcp-playwright': [{ name: '@playwright/mcp', version: '0.0.82' }], 'plugin-litellm-pricing': [{ name: 'opencode-plugin-litellm-pricing', version: '0.9.0' }], - 'plugin-opencode-planify-german': [{ name: 'opencode-planify-german', version: '0.3.2' }], + 'plugin-opencode-planify-german': [{ name: 'opencode-planify-german', version: '0.4.0' }], 'plugin-superpowers': [{ name: 'superpowers', version: '6.4.2' }], };