Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
30 changes: 17 additions & 13 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -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"
},
Expand All @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "propulsion",
"version": "1.0.2",
"version": "1.0.3",
"main": "./index.mjs",
"exports": "./index.mjs",
"scripts": {
Expand Down
1 change: 0 additions & 1 deletion plugins/propulsion/.codex-plugin

This file was deleted.

1 change: 0 additions & 1 deletion plugins/propulsion/assets

This file was deleted.

1 change: 0 additions & 1 deletion plugins/propulsion/hooks

This file was deleted.

1 change: 0 additions & 1 deletion plugins/propulsion/skills

This file was deleted.

4 changes: 1 addition & 3 deletions skills/interrogate/references/interrogate-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,9 @@ Relentlessly ask the user one question at a time. Keep each question decision-or
```markdown
Question: <single question the user must decide>

Recommendation: <best answer and why it fits the current facts>

Options:

- <recommended option, repeated concisely>
- <recommended option> (recommended)
- <viable alternative 1>
- <viable alternative 2, if useful>
- <viable alternative 3, only if genuinely viable>
Expand Down
4 changes: 2 additions & 2 deletions skills/propulsion/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
23 changes: 0 additions & 23 deletions tests/opencode-plugin.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down