Skip to content
Back to skills

2537 Build 49f16b11

ASecurity

The `build` command extracts the Technical Execution section from your growth plan, uses an LLM to generate a focused implementation prompt, and lets you send that prompt to Cursor, Claude, or view it in the terminal.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
ai-agentsbashapici/cd

Works with

  • cursor
  • terminal
  • cli
  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2537-build_49f16b11 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2537 Build 49f16b11?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2537 Build 49f16b11
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2537-build-49f16b11/badge)](https://www.skillsdirectory.com/skills/tools-only-2537-build-49f16b11)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Build Command

The `build` command extracts the Technical Execution section from your growth plan, uses an LLM to generate a focused implementation prompt, and lets you send that prompt to Cursor, Claude, or view it in the terminal.

## Prerequisites

Before running `build`, you need:

- A `growth-plan.md` file generated by the `plan` command. See [Plan](plan.md) for details.
- An API key configured for a cloud LLM provider (OpenAI, Gemini, Anthropic), or a local LLM server running (Ollama). The LLM is used to generate the implementation prompt and a growth loop definition. See [configuration](configuration.md) for setup instructions.

## Basic usage

Build a prompt using auto-detected plan and configured LLM settings:

```bash
uvx skene-growth build
```

The command looks for `growth-plan.md` in `./skene-context/` first, then falls back to the current directory.

Override LLM settings:

```bash
uvx skene-growth build --api-key "your-key" --provider gemini
```

Specify a custom plan file:

```bash
uvx skene-growth build --plan ./my-plan.md
```

Point to a context directory:

```bash
uvx skene-growth build --context ./my-context
```

## Flag reference

| Flag | Short | Description |
|------|-------|-------------|
| `--plan PATH` | | Path to growth plan markdown file |
| `--context PATH` | `-c` | Directory containing `growth-plan.md`. Auto-detected from `./skene-context/` if not specified. |
| `--api-key TEXT` | | API key for LLM provider (or `SKENE_API_KEY` env var) |
| `--provider TEXT` | `-p` | LLM provider: `openai`, `gemini`, `anthropic`/`claude`, `lmstudio`, `ollama`, `generic` |
| `--model TEXT` | `-m` | Model name (uses provider default if not provided) |
| `--base-url TEXT` | | Base URL for OpenAI-compatible API endpoint. Required when provider is `generic`. Also set via `SKENE_BASE_URL` env var or config. |
| `--debug` | | Log all LLM input/output to `.skene-growth/debug/` |
| `--no-fallback` | | Disable model fallback on rate limits. Retries the same model with exponential backoff instead of switching to a cheaper model. |
| `--target TEXT` | `-t` | Skip the interactive menu and send the prompt directly. Options: `cursor`, `claude`, `show`, `file`. |

## How it works

The build command follows a five-step pipeline:

### Step 1: Locate the growth plan

The command auto-detects the plan file in this order:

1. If `--context` is specified, looks for `growth-plan.md` inside that directory
2. Checks `./skene-context/growth-plan.md`
3. Checks `./growth-plan.md`

You can override this with `--plan` to specify an exact path.

### Step 2: Extract the Technical Execution section

The command parses the growth plan Markdown and extracts the **Technical Execution** section. This section is generated by the `plan` command's Council of Growth Engineers and contains:

- **The Next Build** -- What specific activation loop or feature to build
- **Confidence Score** -- A 0%-100% rating of the hypothesis
- **Exact Logic** -- The specific flow changes or implementation logic
- **Exact Data Triggers** -- Events that signal successful activation
- **Sequence** -- The Now / Next / Later roadmap

If the Technical Execution section cannot be found, the command exits with an error and prompts you to generate a proper plan first.

### Step 3: Generate an intelligent prompt with LLM

The extracted Technical Execution context is sent to your configured LLM with a meta-prompt. The LLM generates a focused, actionable implementation prompt that:

- States the engineering work based on the Technical Execution context
- Includes all relevant technical details (logic, triggers, sequence)
- References the growth plan file for additional context
- Asks for step-by-step implementation with code examples

If the LLM call fails, the command falls back to a static template that wraps the Technical Execution content in a basic prompt structure.

### Step 4: Choose a destination

After generating the prompt, the command presents an interactive menu:

```
Where do you want to send this prompt?
> Cursor (open via deep link)
  Claude (open in terminal)
  Show full prompt
  Cancel
```

Use arrow keys to navigate and Enter to select. If the `questionary` package is not installed, the command falls back to a numbered menu.

If `--target` is provided, this step is skipped entirely and the command proceeds directly to the specified destination.

### Step 5: Generate a growth loop definition

Regardless of which destination you choose, the command also generates a **growth loop definition** -- a structured JSON file that captures the implementation requirements. This runs in parallel with the destination action.

## Destinations

### Cursor

Selecting **Cursor** opens the Cursor editor via a deep link (`cursor://`). The prompt is saved to a file first (`.skene-build-prompt.md` in the plan's directory), then Cursor is launched with the full prompt content and a reference to the saved file.

This works on macOS, Linux, and Windows. Cursor must be installed on the system.

### Claude

Selecting **Claude** launches the Claude CLI (`claude`) in your current terminal session, passing it a reference to the saved prompt file. This requires the [Claude CLI](https://docs.anthropic.com/claude-code) to be installed.

### Show

Selecting **Show** prints the full prompt to the terminal inside a formatted panel. The prompt is also saved to a file so you can copy and use it with any tool.

### File

Selecting **File** (only available via `--target file`) saves the prompt to a file and exits immediately without opening any editor or printing the full prompt. This is the recommended target for scripting and CI/CD pipelines.

In all cases, the prompt is saved to `.skene-build-prompt.md` in the plan's parent directory (or the configured output directory).

## Growth loop definitions

Every successful `build` run produces a growth loop JSON file saved to `./skene-context/growth-loops/`. The filename follows the pattern `<loop_id>_<YYYYMMDD_HHMMSS>.json`.

The loop ID is derived from the "Next Build" field in the Technical Execution section, converted to snake_case with phase prefixes removed (e.g., "Phase 1: Share Flag" becomes `share_flag`).

### Schema

The growth loop JSON conforms to the `GROWTH_LOOP_VERIFICATION_SPEC` schema:

```json
{
  "loop_id": "share_flag",
  "name": "Share Flag",
  "description": "Detailed description of the growth loop",
  "requirements": {
    "files": [
      {
        "path": "src/components/ShareButton.tsx",
        "purpose": "Share button component for the main dashboard",
        "required": true,
        "checks": [
          {
            "type": "function_exists",
            "pattern": "handleShare",
            "description": "Share handler function must exist"
          }
        ]
      }
    ],
    "functions": [
      {
        "file": "src/components/ShareButton.tsx",
        "name": "handleShare",
        "required": true,
        "signature": "handleShare(url: string) -> void",
        "logic": "Takes a URL string, generates a shareable link with tracking parameters, copies it to clipboard, and triggers a share_initiated telemetry event."
      }
    ],
    "integrations": [
      {
        "type": "ui_component",
        "description": "Share button in dashboard header",
        "verification": "Component renders in dashboard layout"
      }
    ],
    "telemetry": [
      {
        "event_name": "share_initiated",
        "description": "User clicked the share button",
        "trigger_location": "src/components/ShareButton.tsx",
        "trigger_condition": "After user clicks share and link is copied",
        "properties": ["share_type", "source_page", "user_id"]
      }
    ]
  },
  "dependencies": [],
  "verification_commands": ["npm test -- --grep ShareButton"],
  "test_coverage": {
    "unit_tests": ["ShareButton renders correctly", "handleShare generates valid URL"],
    "integration_tests": ["Share flow completes end-to-end"],
    "manual_tests": ["Click share button and verify link is copied"]
  },
  "metrics": {
    "telemetry_events": ["share_initiated", "share_completed"],
    "success_criteria": ["Share rate > 5% of active users"]
  },
  "_metadata": {
    "source_plan_path": "/absolute/path/to/growth-plan.md",
    "saved_at": "2025-01-15T10:30:00",
    "target": "cursor",
    "prompt": "The full generated prompt text..."
  }
}
```

Key sections of the schema:

| Section | Description |
|---------|-------------|
| `requirements.files` | Files to create or modify, with verification checks (type, pattern, description) |
| `requirements.functions` | Functions to implement, including signature and logic description |
| `requirements.integrations` | Integration points (CLI flags, API endpoints, UI components, external services) |
| `requirements.telemetry` | Events to track, with trigger locations and conditions |
| `dependencies` | Other loop IDs this loop depends on |
| `verification_commands` | Commands to verify the implementation |
| `test_coverage` | Unit, integration, and manual test descriptions |
| `metrics` | Telemetry events and success criteria (KPIs) |
| `_metadata` | Build metadata: source plan path, timestamp, chosen destination, generated prompt |

Growth loop files accumulate over time. The `plan` command reads existing loops and instructs the council not to suggest duplicates, keeping successive iterations complementary.

## LLM configuration

The build command requires LLM configuration. It loads settings from your config file (`.skene-growth.config` or `~/.config/skene-growth/config`) and can be overridden with CLI flags.

If neither an API key nor a provider is configured, the command exits with an error listing all configuration options.

The LLM is used twice during a build:

1. To generate the implementation prompt from the Technical Execution context
2. To generate the growth loop definition JSON

If the LLM fails during prompt generation, the command falls back to a static template. If the LLM fails during growth loop generation, the command produces a minimal loop definition with empty arrays.

## Debug mode

The `--debug` flag logs all LLM input and output to `.skene-growth/debug/`:

```bash
uvx skene-growth build --debug
```

You can also enable debug mode permanently in your config file:

```toml
debug = true
```

## Next steps

- [Status](status.md) -- Check whether growth loop requirements have been implemented in your codebase
- [Chat](chat.md) -- Use the interactive terminal chat for ad-hoc growth analysis
- [Configuration](configuration.md) -- Set up persistent config so you do not need to pass flags every time
- [CLI Reference](../reference/cli.md) -- Full reference for all commands and flags

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…