Cody Product Builder
Agent Instructions
- Read this entire document (
SKILL.md) and commit it to memory. - Make sure you check this document often if you need to understand how to process any Cody Product Builder commands.
- Anything that has [AGENT TODO: to do item] means you need to take action.
- When you see AGENT ANNOUNCE, anything in between the
[message](tick marks), you will display to the user exactly as stated. - After every phase, make sure you re-read this document.
- {{cfPlaceholders}} used in commands are defined in this document, under the "Template Placeholder Values" section. When you see a placeholder, you will replace it with its appropriate value.
- The roles are as follows:
- USER Is the human guiding you in the building process.
- AGENT That's you! The AI Development AGENT.
- For detailed phase descriptions, document references, and version naming conventions, see
{{cfReferences}}/phases.md.
Template Placeholder Values
These placeholders are a pointer to actual values. They are created here and used throughout various commands. When you encounter a placeholder, you will replace it with its value and consider that as the literal (e.g. {{cfCommands}}/help.md translates to commands/help.md).
The skill-file placeholders ({{cfRoot}}, {{cfAssets}}, {{cfCommands}}, {{cfReferences}}) are paths relative to this skill's own folder.
| Placeholder | Maps to | Description |
|---|---|---|
| {{cfRoot}} | . | This skill's root folder. |
| {{cfAssets}} | assets | Cody assets folder (templates and other static resources). |
| {{cfCommands}} | commands | Cody commands to be executed. |
| {{cfReferences}} | references | Shared reference content loaded on demand by commands. |
| {{cfProject}} | Dynamic -- resolved from cody.json |
Project output folder. Read from cody.json > cody-product-builder > projectPath. Default: cody-projects/product-builder. Resolved on activation and cached for the session. Re-resolved on :cody refresh. |
| {{cfPlanPhase}} | {{cfProject}}/plan |
Plan phase folder. |
| {{cfWorkPhase}} | {{cfProject}}/build |
Build phase folder. |
| {{cfReleaseNotes}} | Dynamic -- resolved from cody.json |
Release notes folder. Read from cody.json > cody-product-builder > releaseNotesPath. If "{{projectPath}}": resolves to {{cfWorkPhase}}. If "{{projectRoot}}": resolves to project root. Otherwise: resolves to the custom path. Resolved on activation and cached for the session. Re-resolved on :cody refresh. |
| {{cfPrototypes}} | {{cfProject}}/prototypes |
Prototype output folder. Holds throwaway, self-contained prototype subfolders, each with its own prototype.md and code. Sits outside the Plan and Build phases. |
| {{cfBestPractices}} | {{cfProject}}/best-practices |
Project best-practices folder. Holds project-best-practices.md, the project's living record of build learnings. A project-level folder alongside the Plan and Build phases. |
File System Checks
- Always use the placeholder paths (e.g.,
{{cfPlanPhase}},{{cfProject}}) when checking for files or folders. Never construct paths manually or use relative paths like./cody-projects/.... - Before concluding that a folder is empty or files don't exist, always verify with at least two different methods (e.g., a glob search AND a directory listing). Never make decisions based on a single failed search. This prevents false negatives caused by path resolution issues.
Executing Commands
- If the USER types any of the commands listed below, read and execute the corresponding command file.
- Only read command files when they are invoked. Do not pre-load all commands.
:cody help
[AGENT TODO: Read and execute {{cfCommands}}/help.md]
:cody plan
[AGENT TODO: Read and execute {{cfCommands}}/plan.md]
:cody build
[AGENT TODO: Read and execute {{cfCommands}}/build.md]
:cody idea
[AGENT TODO: Read and execute {{cfCommands}}/idea.md]
:cody prototype
[AGENT TODO: Read and execute {{cfCommands}}/prototype.md]
:cody refresh
[AGENT TODO: Read and execute {{cfCommands}}/refresh.md]
Activation
When this skill is activated, AGENT, please execute the following exactly:
-
Resolve the project configuration. Resolving placeholder paths from
cody.jsonis deterministic work, so the skill ships a script to do it reliably and cheaply.Run the resolver script. From the project root, run
{{cfRoot}}/scripts/resolve-config.py. It readscody.jsonand prints a JSON object: the resolved placeholder paths underresolved(cfProject,cfPlanPhase,cfWorkPhase,cfReleaseNotes,cfPrototypes,cfBestPractices), plus the flagscody_json_exists,has_section,release_notes_path_present, andlegacy_project_json_exists. Cache the six resolved values for the rest of the session.Fallback -- only if the script cannot run (no Python runtime, or code execution unavailable). Resolve the values by hand:
- If
cody.jsonexists with acody-product-buildersection:{{cfProject}}=projectPath;{{cfPlanPhase}}={{cfProject}}/plan;{{cfWorkPhase}}={{cfProject}}/build;{{cfPrototypes}}={{cfProject}}/prototypes;{{cfBestPractices}}={{cfProject}}/best-practices;{{cfReleaseNotes}}fromreleaseNotesPath("{{projectPath}}"resolves to{{cfWorkPhase}},"{{projectRoot}}"to the project root, any other value to that path). - If
cody.jsondoes not exist: use defaults --{{cfProject}}=cody-projects/product-builder, with/plan,/build,/prototypes, and/best-practicesbeneath it, and{{cfReleaseNotes}}={{cfWorkPhase}}. - Cache the resolved values for the rest of the session.
One-time migration -- missing
releaseNotesPath. Ifcody.jsonexists with acody-product-buildersection but noreleaseNotesPathfield (script flaghas_sectionis true andrelease_notes_path_presentis false), handle it here -- the script leaves this to the skill because it needs the USER:- Tell the USER where
release-notes.mdcurrently lives (check{{cfWorkPhase}}/release-notes.md). - Ask: "Would you like to keep release notes there, or move them?" with options:
- Keep current location
- Project root
- Custom path
- STOP and wait for the USER.
- If they keep the current location, set
releaseNotesPathto"{{projectPath}}"incody.json. - If project root, set
releaseNotesPathto"{{projectRoot}}"incody.json. - If custom, ask for the path and set
releaseNotesPathto that value incody.json. - If they chose a different location and
release-notes.mdexists at the current location, move it to the new location. - Re-resolve
{{cfReleaseNotes}}(re-run the script) and cache it.
- If
-
Show the USER the following banner (replace {version} with the
metadata.versionvalue from this file's frontmatter):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cody Product Builder v{version}
by iBuildWith.ai
(c) 2026 Red Pill Blue Pill Studios
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Cody Product Builder is an AI agent skill for domain experts and knowledge workers that takes you from idea to finished product. It provides a structured, repeatable process so your projects are scalable, maintainable, and built right from the start, whether you're starting fresh, improving existing work, or making quick updates in any AI coding environment.
-
Show the USER a contextual prompt based on their current phase:
- Check if
cody.jsonexists and has acody-product-buildersection.- If it exists and phase is
"plan": show"Ready to get started? Type :cody plan to begin, :cody prototype to test an idea first, or :cody help to see all available commands." - If it exists and phase is
"build": show"What would you like to work on? Type :cody build to continue building, :cody prototype to test an idea, :cody idea to capture a quick thought, :cody refresh to refresh project memory, or :cody help to see all available commands." - If it does NOT exist, check if the legacy file
cody-projects/product-builder/project.jsonexists.- If the legacy file exists:
- Tell the USER: "This version of Cody Product Builder uses a new project settings format. Let me migrate your settings."
- [AGENT TODO: Read and execute {{cfReferences}}/project-settings-check.md]
- After migration is complete, re-resolve
{{cfProject}},{{cfPlanPhase}},{{cfWorkPhase}}, and{{cfReleaseNotes}}from the newly createdcody.jsonand cache them for the session. - Show the contextual prompt based on the phase from
cody.json.
- If neither file exists: show
"What would you like to work on? Type :cody help to see all available commands."
- If the legacy file exists:
- If it exists and phase is
- Check if
-
Stop here and wait for the USER.