Skip to content
Back to skills

Configure

ASecurity

Use when asked to configure little-loops, change settings, or update ll-config.json.

  • 6 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 6, 2026
ai-agentspythongobashgit

Works with

  • claude code
  • cli

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 3 files and shows the line behind each finding

Scanned October 6, 2026

npx -y skills add BrennonTWilliams/little-loops --skill configure --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Configure?

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

Security grade badge for Configure
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/brennontwilliams-configure/badge)](https://www.skillsdirectory.com/skills/brennontwilliams-configure)

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

Download with Pro
SKILL.md
---
name: configure
description: Use when asked to configure little-loops, change settings, or update ll-config.json.
argument-hint: "[area]"
allowed-tools:
  - Read
  - Edit
  - AskUserQuestion
  - Bash(mkdir:*)
  - Bash(python3:*)
  - Bash(pip:*)
arguments:
  - name: area
    description: "project|issues|commands|parallel|automation|documents|continuation|context|prompt|scan|sync|allowed-tools|hooks|design-tokens|analytics|learning-tests|decisions|history|loops.run_defaults (optional - prompts if omitted)"
    required: false
  - name: flags
    description: Optional flags (--list, --show, --reset)
    required: false
metadata:
trigger_fixtures:
  should_fire:
    - "configure little-loops settings and update ll-config json"
    - "change the little-loops settings in ll-config"
  should_not_fire:
    - "adjust the default number of parallel sprint workers"
    - "propose automations from workflow patterns"
---

# Configure

<!-- PLUGIN_VERSION: 1.106.0 -->

Interactively configure specific areas of `.ll/ll-config.json` without re-running `ll-init`.

## Configuration

Settings are stored in `.ll/ll-config.json`. See `config-schema.json` for default values and validation rules.

## Process

### 1. Parse Arguments

```bash
AREA="${area:-}"
FLAGS="${flags:-}"

LIST_MODE=false
SHOW_MODE=false
RESET_MODE=false

if [[ "$FLAGS" == *"--list"* ]]; then LIST_MODE=true; fi
if [[ "$FLAGS" == *"--show"* ]]; then SHOW_MODE=true; fi
if [[ "$FLAGS" == *"--reset"* ]]; then RESET_MODE=true; fi
```

### 1.5. Pip Package Check

**Skip this step if** `LIST_MODE`, `SHOW_MODE`, or `RESET_MODE` is `true` (these modes are informational or destructive, not configuration sessions where a version mismatch matters).

Check whether the installed `little-loops` pip package is aligned with this plugin version. This is a **non-blocking** check — display warnings but always proceed. Since configure has no `--yes` flag, this check is always interactive.

1. Read the `PLUGIN_VERSION` from the `<!-- PLUGIN_VERSION: X.Y.Z -->` comment near the top of this file.

2. Detect the installed package version:
   ```bash
   python3 -c "import importlib.metadata; print(importlib.metadata.version('little-loops'))" 2>/dev/null
   ```

3. Evaluate the result:
   - If the command fails (package not installed):
     ```
     Warning: 'little-loops' pip package not installed — ll-* CLI tools unavailable
     Install: pip install little-loops
     ```
     Always proceed.
   - If installed and versions match → no output (silent success).
   - If installed and versions differ:
     - Determine install command:
       ```bash
       EDITABLE_INSTALL=$(pip show little-loops 2>/dev/null | grep -E "^Editable project location:")
       if [ -n "$EDITABLE_INSTALL" ]; then
           EDITABLE_PATH=$(echo "$EDITABLE_INSTALL" | sed 's/^Editable project location: //')
           INSTALL_CMD="pip install -e '$EDITABLE_PATH'"  # ll-audience-ok: editable path detected at runtime
       else
           INSTALL_CMD="pip install --upgrade little-loops"
       fi
       ```
     - Use `AskUserQuestion`:
       ```
       The installed little-loops package (X.Y.Z) is out of date (plugin: A.B.C).
       Update now?
       Options: Yes / No
       ```
     - If user confirms: run `$INSTALL_CMD` via Bash
       - On success: `✓ little-loops updated to A.B.C`
       - On failure: `Warning: pip package update failed — run manually: $INSTALL_CMD`
     - If user declines: `Warning: pip package version mismatch — run: $INSTALL_CMD`

**Always proceed to Step 2 regardless of results.**

### 2. Area Mapping

Map argument names to config sections:

| Argument | Config Section | Description |
|----------|----------------|-------------|
| `project` | `project` | Test, lint, format, type-check, build, run commands |
| `issues` | `issues` | Base dir, categories, templates, capture style |
| `parallel` | `parallel` | ll-parallel: workers, timeouts, worktree files, feature branches, epic branches |
| `automation` | `automation` | ll-auto: workers, timeouts, streaming |
| `documents` | `documents` | Key document categories for issue alignment |
| `continuation` | `continuation` | Session handoff: auto-detect, includes, expiry |
| `context` | `context_monitor` | Context monitoring: threshold, limits |
| `prompt` | `prompt_optimization` | Prompt optimization: mode, confirm, bypass |
| `commands` | `commands` | Command hooks, confidence gate |
| `scan` | `scan` | Focus dirs, exclude patterns |
| `sync` | `sync` | GitHub Issues sync: enabled, label mapping, priorities |
| `allowed-tools` | `permissions.allow` in `.claude/settings.json` or `.claude/settings.local.json` | ll- CLI tool allow entries (Note: writes to Claude Code settings files, not ll-config.json) |
| `hooks` | `hooks` in `.claude/settings.json` or `.claude/settings.local.json` | ll- lifecycle hook configuration (Note: writes to Claude Code settings files, not ll-config.json) |
| `design-tokens` | `design_tokens` | Design system token settings |
| `learning-tests` | `learning_tests` | Learning test registry: enabled, stale_after_days, version-drift staleness, discoverability mode |
| `decisions` | `decisions` | Decisions log: enabled, log_path, auto_generate |
| `analytics` | `analytics` | Analytics capture: enabled, skills, corrections, file_events |
| `history` | `history` | History.db consumer tuning |
| `loops.run_defaults` | `loops.run_defaults` | Persistent defaults for `ll-loop run` (clear, show_diagrams, mode, delay) |
| `code-query` | `code_query` | `ll-code` provider (auto/codegraph/fallback), codegraph auto-sync, staleness policy |

---

## Mode: --list

If `--list` flag is set, display all configuration areas with their status.

Read `.ll/ll-config.json` and check which sections are configured (vs using defaults).

Output format:

```
Configuration Areas
-------------------
  project       [CONFIGURED]  Test, lint, format, type-check, build commands
  issues        [CONFIGURED]  Base dir, categories, templates, capture style
  parallel      [DEFAULT]     ll-parallel: workers, timeouts, worktree files, feature branches, epic branches
  automation    [DEFAULT]     ll-auto: workers, timeouts, streaming
  commands      [DEFAULT]     Command hooks, confidence gate
  documents     [CONFIGURED]  Key document categories for issue alignment
  continuation  [DEFAULT]     Session handoff: auto-detect, includes, expiry
  context       [CONFIGURED]  Context monitoring: threshold, limits
  prompt        [DEFAULT]     Prompt optimization: mode, confirm, bypass
  scan          [CONFIGURED]  Focus dirs, exclude patterns
  sync          [DEFAULT]     GitHub Issues sync: enabled, label mapping, priorities
  allowed-tools [DEFAULT]     ll- CLI tool allow entries in settings.json/settings.local.json
  hooks         [DEFAULT]     ll- hook configuration in settings.json/settings.local.json
  design-tokens [DEFAULT]     Design system token settings
  learning-tests [DEFAULT]    Learning test registry: enabled, stale_after_days, version drift, discoverability
  decisions      [DEFAULT]    Decisions log: enabled, log_path, auto_generate
  analytics      [DEFAULT]     Analytics capture: enabled, skills, corrections, file_events
  history              [DEFAULT]     History.db consumer tuning
  loops.run_defaults   [DEFAULT]     Persistent defaults for ll-loop run: clear, show_diagrams, mode, delay

Configure: /ll:configure <area>
Show:      /ll:configure <area> --show
Reset:     /ll:configure <area> --reset
```

Mark as `[CONFIGURED]` if the section exists in the config file with any keys.
Mark as `[DEFAULT]` if the section is absent (using schema defaults).

**Stop here if --list mode.**

---

## Mode: --show

If `--show` flag is set with an area, display current values for that area.

Validate area argument - if invalid, show error and list valid areas.

For detailed output formats for each area, see [show-output.md](show-output.md).

**Stop here if --show mode.**

---

## Mode: --reset

If `--reset` flag is set with an area, remove the section from config.

1. Read `.ll/ll-config.json`
2. Delete the mapped config section (e.g., `context` → delete `context_monitor`)
3. Write updated config back (preserving `$schema` and other sections)
4. Display confirmation

Output:

```
Reset: [area] section removed from configuration
       Now using schema defaults

View defaults: /ll:configure [area] --show
```

**Stop here if --reset mode.**

---

## Mode: Interactive (No Flags)

### Step 1: Area Selection

If no area argument provided, use AskUserQuestion to let user select.

**IMPORTANT**: Group areas logically. Show 4 at a time with "More..." option.

```yaml
questions:
  - question: "Which configuration area do you want to modify?"
    header: "Area"
    multiSelect: false
    options:
      - label: "project"
        description: "Test, lint, format, type-check, build commands"
      - label: "issues"
        description: "Base dir, categories, templates, capture style"
      - label: "scan"
        description: "Focus dirs, exclude patterns"
      - label: "More areas..."
        description: "Show commands, parallel, automation, documents, continuation, context, prompt"
```

If "More areas..." selected:

```yaml
questions:
  - question: "Which additional area do you want to configure?"
    header: "Area"
    multiSelect: false
    options:
      - label: "commands"
        description: "Command hooks, confidence gate"
      - label: "parallel"
        description: "ll-parallel: workers, timeouts, worktree files, feature branches, epic branches"
      - label: "automation"
        description: "ll-auto: workers, timeouts, streaming"
      - label: "More areas..."
        description: "Show documents, sync, continuation, context, prompt, design-tokens"
```

If "More areas..." selected again:

```yaml
questions:
  - question: "Which area do you want to configure?"
    header: "Area"
    multiSelect: false
    options:
      - label: "documents"
        description: "Key document categories for issue alignment"
      - label: "sync"
        description: "GitHub Issues sync: enabled, label mapping, priorities"
      - label: "continuation"
        description: "Session handoff: auto-detect, includes, expiry"
      - label: "More areas..."
        description: "Show context, prompt, design-tokens, learning-tests, allowed-tools, hooks"
```

If "More areas..." selected again:

```yaml
questions:
  - question: "Which area do you want to configure?"
    header: "Area"
    multiSelect: false
    options:
      - label: "context"
        description: "Context monitoring: threshold, limits"
      - label: "prompt"
        description: "Prompt optimization: mode, confirm, bypass"
      - label: "design-tokens"
        description: "Design system token settings"
      - label: "More areas..."
        description: "Show analytics, history, learning-tests, decisions, allowed-tools, hooks"
```

If "More areas..." selected again:

```yaml
questions:
  - question: "Which area do you want to configure?"
    header: "Area"
    multiSelect: false
    options:
      - label: "analytics"
        description: "Analytics capture: enabled, skills, corrections, file_events"
      - label: "history"
        description: "History.db consumer tuning"
      - label: "More areas..."
        description: "Show learning-tests, decisions, allowed-tools, hooks"
```

If "More areas..." selected again:

```yaml
questions:
  - question: "Which area do you want to configure?"
    header: "Area"
    multiSelect: false
    options:
      - label: "learning-tests"
        description: "Learning test registry: enabled, stale_after_days, version drift, discoverability"
      - label: "decisions"
        description: "Decisions log: enabled, log_path, auto_generate"
      - label: "More areas..."
        description: "Show allowed-tools, hooks, code-query"
```

If "More areas..." selected again:

```yaml
questions:
  - question: "Which area do you want to configure?"
    header: "Area"
    multiSelect: false
    options:
      - label: "allowed-tools"
        description: "ll- CLI tool allow entries in settings.json/settings.local.json"
      - label: "hooks"
        description: "ll- lifecycle hook configuration in settings.json/settings.local.json"
      - label: "code-query"
        description: "ll-code provider (codegraph index vs grep/AST fallback), auto-sync, staleness"
```

### Step 2: Interactive Configuration

Based on selected area, run the appropriate interactive flow.

For detailed area-specific configuration flows, see [areas.md](areas.md).

### Step 3: Show Changes

After collecting responses, display what will change:

```
Changes to apply:
-----------------
  [section].[key]: "[old_value]" -> "[new_value]"
  [section].[key]: "[old_value]" -> "[new_value]"
  ...

Apply changes? [Y/n]
```

If no changes selected (all "keep" options), display:

```
No changes selected. Configuration unchanged.
```

### Step 4: Update Config

1. Read existing `.ll/ll-config.json`
2. Merge changes into the appropriate section
3. **Minimal write rule**: If a value matches the schema default, remove it from config
4. If a section becomes empty after removing defaults, remove the section
5. Preserve `$schema` reference
6. Write updated config

Output on success:

```
Configuration updated: .ll/ll-config.json

Changes applied:
  [section].[key]: [new_value]

View: /ll:configure [area] --show
```

---

## Arguments

$ARGUMENTS

- **area** (optional): Configuration area to modify
  - `project` - Test, lint, format, type-check, build commands
  - `issues` - Base dir, categories, templates, capture style
  - `commands` - Command hooks, confidence gate
  - `parallel` - ll-parallel: workers, timeouts, worktree files, feature branches, epic branches
  - `automation` - ll-auto: workers, timeouts, streaming
  - `documents` - Key document categories for issue alignment
  - `continuation` - Session handoff: auto-detect, includes, expiry
  - `context` - Context monitoring: threshold, limits
  - `prompt` - Prompt optimization: mode, confirm, bypass
  - `scan` - Focus dirs, exclude patterns
  - `sync` - GitHub Issues sync: enabled, label mapping, priorities
  - `allowed-tools` - ll- CLI tool allow entries in settings.json/settings.local.json
  - `hooks` - ll- lifecycle hook configuration in settings.json/settings.local.json
  - `design-tokens` - Design system token settings
  - `analytics` - Analytics capture: enabled, skills, corrections, file_events
  - `learning-tests` - Learning test registry: enabled, stale_after_days, version drift, discoverability
  - `decisions` - Decisions log: enabled, log_path, auto_generate
  - `history` - History.db consumer tuning

- **flags** (optional): Command behavior flags
  - `--list` - Display all configuration areas with status
  - `--show` - Display current values for specified area
  - `--reset` - Remove section from config, reverting to defaults

---

## Examples

```bash
# List all configuration areas with status
/ll:configure --list

# Show current project configuration
/ll:configure project --show

# Interactively configure project settings
/ll:configure project

# Reset context_monitor to defaults
/ll:configure context --reset

# No args - select area interactively
/ll:configure
```

---

## Integration

Changes take effect immediately. Commands that read from `.ll/ll-config.json` will use the updated values.

Related commands:
- `ll-init` - Bootstrap a new project config from the CLI
- `/ll:toggle-autoprompt` - Quick toggle for prompt optimization settings

Files in this skill

  • SKILL.md15.2 KB
  • areas.md57.8 KB
  • show-output.md12.3 KB

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…