diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 855b046..224097e 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -8,8 +8,9 @@ { "name": "propulsion", "source": { - "source": "local", - "path": "./plugins/propulsion" + "source": "url", + "url": "https://github.com/moonpixels/propulsion.git", + "ref": "main" }, "policy": { "installation": "AVAILABLE", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 4835c37..e9fbdc2 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "propulsion", - "version": "1.0.2", - "description": "Propulsion workflow routing and skills for agentic coding.", + "version": "1.0.3", + "description": "Opinionated agentic coding workflow that guides software work from exploration and planning through execution and review.", "author": { "name": "Moon Pixels" }, @@ -10,34 +10,38 @@ "license": "MIT", "keywords": [ "propulsion", - "codex", - "codex-plugin", - "opencode", - "opencode-plugin", "agentic-coding", + "software-development", "skills", "workflow", + "exploration", "planning", + "execution", + "review", + "brainstorm", + "interrogate", + "plan", + "execute", + "debug", "tdd", "debugging", - "review", - "guardrails", + "prd", "developer-tools" ], "skills": "./skills/", "hooks": "./hooks/hooks.json", "interface": { "displayName": "Propulsion", - "shortDescription": "Workflow routing and skills for agentic coding.", - "longDescription": "Propulsion adds a compact workflow skill set and high-priority startup routing guidance while preserving Codex tools and permissions.", + "shortDescription": "Opinionated workflow for agentic software development.", + "longDescription": "Propulsion automatically guides ordinary software requests through an opinionated agentic coding workflow: explore the codebase, resolve scope, create a plan, execute in focused slices, and review the result before handoff. It keeps agents grounded in repo context, explicit decisions, tests, and review loops.", "developerName": "Moon Pixels", "category": "Coding", "capabilities": ["Interactive", "Read", "Write"], "websiteURL": "https://github.com/moonpixels/propulsion", "defaultPrompt": [ - "Turn my idea into an implementation-ready plan with Propulsion", - "Debug and fix this bug with Propulsion guardrails", - "Review these changes with the Propulsion review workflow" + "Implement social auth with Google and GitHub", + "Update the app to support team workspaces and role-based access", + "Fix the bug causing saved settings to reset after refresh" ], "brandColor": "#FF4F00", "composerIcon": "./assets/propulsion_icon_square.png", diff --git a/package.json b/package.json index e306ede..e20b758 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "propulsion", - "version": "1.0.2", + "version": "1.0.3", "main": "./index.mjs", "exports": "./index.mjs", "scripts": { diff --git a/plugins/propulsion/.codex-plugin b/plugins/propulsion/.codex-plugin deleted file mode 120000 index c3acab0..0000000 --- a/plugins/propulsion/.codex-plugin +++ /dev/null @@ -1 +0,0 @@ -../../.codex-plugin \ No newline at end of file diff --git a/plugins/propulsion/assets b/plugins/propulsion/assets deleted file mode 120000 index 41aef43..0000000 --- a/plugins/propulsion/assets +++ /dev/null @@ -1 +0,0 @@ -../../assets \ No newline at end of file diff --git a/plugins/propulsion/hooks b/plugins/propulsion/hooks deleted file mode 120000 index 2777e15..0000000 --- a/plugins/propulsion/hooks +++ /dev/null @@ -1 +0,0 @@ -../../hooks \ No newline at end of file diff --git a/plugins/propulsion/skills b/plugins/propulsion/skills deleted file mode 120000 index 5dcab58..0000000 --- a/plugins/propulsion/skills +++ /dev/null @@ -1 +0,0 @@ -../../skills \ No newline at end of file diff --git a/skills/interrogate/references/interrogate-protocol.md b/skills/interrogate/references/interrogate-protocol.md index 25981c6..31485f9 100644 --- a/skills/interrogate/references/interrogate-protocol.md +++ b/skills/interrogate/references/interrogate-protocol.md @@ -21,11 +21,9 @@ Relentlessly ask the user one question at a time. Keep each question decision-or ```markdown Question: -Recommendation: - Options: -- +- (recommended) - - - diff --git a/skills/propulsion/SKILL.md b/skills/propulsion/SKILL.md index d0afa65..b4944fb 100644 --- a/skills/propulsion/SKILL.md +++ b/skills/propulsion/SKILL.md @@ -31,8 +31,8 @@ Follow these steps IN ORDER. Do NOT skip steps. These rules are MANDATORY. - User instructions, repository rules, and `AGENTS.md` take priority, then Propulsion skills, then default system behaviour. -- Concrete failures route to `debug`: bug reports, regressions, failing tests, failing builds, runtime errors, crashes, broken behaviour, and diagnosis requests. -- Feature and product-scope work routes to `brainstorm`: new features, unclear scope, UX/product shaping, requirements discovery, PRDs, and broad implementation requests. +- Concrete failures route to `debug`: bug reports, regressions, failing tests, failing builds, runtime errors, crashes etc. +- Feature and product-scope work routes to `brainstorm`: new features, unclear scope, UX/product shaping, requirements discovery, behaviour changes, refactors, optimisations etc. - If `propulsion` applies, route first. Do NOT reload `propulsion` or skip it because the task looks small, obvious, or familiar. - Once following Propulsion workflow, DO NOT leave it until completion. ALWAYS follow the rules of each skill. - ALWAYS route first. DO NOT rationalise skipping with thoughts like: "I need more context first", "I'll inspect the repo first", "This is too small for Propulsion". They are all FALSE. diff --git a/tests/opencode-plugin.test.js b/tests/opencode-plugin.test.js index 7f09904..ed195d4 100644 --- a/tests/opencode-plugin.test.js +++ b/tests/opencode-plugin.test.js @@ -23,29 +23,6 @@ describe('OpenCode Propulsion bootstrap guidance', () => { ).toBe(true); }); - test('publishes Propulsion through a non-empty Codex marketplace plugin path', async () => { - const marketplace = JSON.parse( - await readFile('.agents/plugins/marketplace.json', 'utf8'), - ); - const plugin = marketplace.plugins.find( - ({ name }) => name === 'propulsion', - ); - - expect(plugin.source).toEqual({ - source: 'local', - path: './plugins/propulsion', - }); - - const pluginManifest = JSON.parse( - await readFile( - 'plugins/propulsion/.codex-plugin/plugin.json', - 'utf8', - ), - ); - - expect(pluginManifest.name).toBe('propulsion'); - }); - test('registers bundled skills with OpenCode config', async () => { const pluginPackage = (await import('../index.mjs')).default; const PropulsionPlugin = pluginPackage.server;