Skip to content
Back to skills

Lulu Approach

ASecurity

Domain holder for technical diagnostic decisions. It orchestrates one `decision` session under approach constraints; scripts own transitions, validation, and persistence.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 2, 2026
ai-agentspythonshellbash

Security analysis

A100/100

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

Scanned October 5, 2026

npx -y skills add lulufoo/lulu-workflow --skill lulu-approach --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Lulu Approach?

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

Security grade badge for Lulu Approach
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lulufoo-lulu-approach/badge)](https://www.skillsdirectory.com/skills/lulufoo-lulu-approach)

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: lulu-approach
---

# lulu-approach

Domain holder for technical diagnostic decisions. It orchestrates one `decision` session under approach constraints; scripts own transitions, validation, and persistence.

## Prerequisites

<HARD-GATE>
Do NOT proceed until you have read `../_runtime.md` and `../decision/SKILL.md` in full, and loaded:

- `$SKILL_ROOT`, `$WORKFLOW_DIR`, `$PLATFORM`, `$CACHE_DIR` from `## Platform Context`
- `$SKILL_DIR` = `$SKILL_ROOT/lulu-approach`
- `$DECISION_SKILL_DIR` = `$SKILL_ROOT/decision`
- `$APPROACH_ROOT` = `$CACHE_DIR/<cycle_id>/lulu-approach` (the decision session)
- Feature identification logic from `## Session Foundation`
</HARD-GATE>

## Script Macros

| Macro | Command |
|-------|---------|
| `$RESOLVE_CONTEXT` | `python3 "$SKILL_DIR/scripts/resolve_context.py" --cycle-id "<cycle_id>" --constraints "$SKILL_DIR/constraints-$CYCLE_TYPE.json" [--session-dir "<approach_root>"]` |
| `$RESOLVE_CONTEXT_DOCS` | `python3 "$SKILL_DIR/scripts/resolve_context_docs.py" --cycle-id "<cycle_id>" --constraints "$SKILL_DIR/constraints-$CYCLE_TYPE.json"` |
| `$RESOLVE_CONSTRAINT_DOCS` | `python3 "$SKILL_DIR/scripts/resolve_constraint_docs.py" --cycle-id "<cycle_id>" --constraints "$SKILL_DIR/constraints-$CYCLE_TYPE.json"` |
| `$APPROACH_SHELL` | `python3 "$SKILL_DIR/scripts/approach_shell_control.py" --approach-root "$APPROACH_ROOT"` |
| `$APPROACH_SESSION` | `python3 "$SKILL_DIR/scripts/approach_shell_control.py" --approach-root "$APPROACH_ROOT" <subcommand> --cycle-id "<cycle_id>" --constraints "$SKILL_DIR/constraints-$CYCLE_TYPE.json"` |
| `$APPROACH_DELIVER` | `python3 "$SKILL_DIR/scripts/approach_shell_control.py" --approach-root "$APPROACH_ROOT" deliver --cycle-id "<cycle_id>" --confirm` |

Decision macros (`$DEC_START`, `$GATE_CONTROL`, `$RS_COMMIT`, ...) are defined in `../decision/SKILL.md`; `<constraints_path>` is `$SKILL_DIR/constraints-$CYCLE_TYPE.json`.

- Subcommand and stdout contracts remain in script module docstrings or `--help`.
- Any command that exits non-zero stops the flow: report stderr.

## Shared procedures

Steps that Start, Resume, and Reopen invoke by name.

### Pre-entry loading

Run before `$DEC_START`, `$APPROACH_SESSION enter`, or `$APPROACH_SESSION reopen`. For each kind, in this order:

| Kind | Docs macro | Rules |
|------|------------|-------|
| Context | `$RESOLVE_CONTEXT_DOCS` | `$SKILL_DIR/references/context-rules.md` |
| Constraint | `$RESOLVE_CONSTRAINT_DOCS` | `$SKILL_DIR/references/constraint-rules.md` |

1. Run the docs macro. Parse stdout for `files`.
2. Read each path in `files` once. If `files` is empty, skip reading.
3. Load the rules file and apply its sections in order (Principle → materials → Obligation → Body entry → Self-check). Do not classify documents into kinds yourself.

### Context activation

Run after `$DEC_START`, `$APPROACH_SESSION enter`, or `$APPROACH_SESSION reopen` returns `context_docs`:

1. Run `$GATE_CONTROL resolve-context` and pin `$CTX`.
2. Read each returned `context_docs` path once.
3. Declare the active session to the user. Use only the newly pinned `$CTX`.

Do not re-run Pre-entry loading; it runs only before session entry.

## Routes

Resume and Reopen require the approach shell in Session state. From PackageReady or Delivered, report an unsupported state and stop.

### Start

Once Session Foundation is complete:

1. Complete [Pre-entry loading](#pre-entry-loading).
2. Run `$RESOLVE_CONTEXT` with `--session-dir "$APPROACH_ROOT"`; capture stdout path as `$RESOLVED_CONTEXT_PATH`.
3. Run `$APPROACH_SHELL init-shell`.
4. Run `$DEC_START` with:

   ```bash
   --constraints "$SKILL_DIR/constraints-$CYCLE_TYPE.json" \
   --domain-constraints-file "$RESOLVED_CONTEXT_PATH" \
   --session-dir "$APPROACH_ROOT"
   ```

   If it reports a blocked prior stage, report that stage and do not retry.
5. Complete [Context activation](#context-activation).
6. Run the delegated DDF on Active. DC close includes `$GATE_CONTROL complete`.

When the session is Completed, continue with [Deliver](#deliver).

### Resume

When Active remains this session:

1. Complete [Pre-entry loading](#pre-entry-loading).
2. Run `$APPROACH_SESSION enter`.
3. Complete [Context activation](#context-activation).

Then resume the delegated DDF on Active.

### Reopen

Requires the approach shell in Session state. If the state is unknown, stop and report rather than infer it from files.

1. Complete [Pre-entry loading](#pre-entry-loading).
2. Run `$APPROACH_SESSION reopen`. Capture stdout `permit_path` as `$PERMIT_PATH` and `transaction_id` as `$TRANSACTION_ID`.
3. Complete [Context activation](#context-activation).
4. Run `$DEC_REOPEN --permit "$PERMIT_PATH"`, perform RS dialogue, then run `$RS_COMMIT --gate "<G>" --operations '<json array>'`.
5. Run `$APPROACH_SESSION complete-reopen --transaction-id "$TRANSACTION_ID"`.

Once the session is repaired, resume the delegated DDF on Active. Do not enter Deliver before then.

### Deliver

Once the session is Completed (`$GATE_CONTROL complete`), enter PackageReady before delivering; Completed is not stage Delivered (`$APPROACH_DELIVER`):

1. Run `$APPROACH_SHELL enter-package-ready`.
2. Run `$APPROACH_DELIVER`. Session Completed authorizes this deliver.

On success, announce stage complete from stdout `next_steps` (join when non-empty).

## Interrupted binding

When any route reports an unresolved binding:

1. Stop and report the binding ID and state from stderr.
2. Wait for an explicit human recovery decision; do not auto-select `compensate-active` or `cancel`.
3. After external recovery, restart the applicable route and obtain fresh command output; do not infer the restored target.

Files in this skill

  • SKILL.md5.7 KB
  • constraints-feature.json3.9 KB
  • constraints-topic.json4.1 KB
  • references/constraint-rules.md848 B
  • references/context-rules.md641 B
  • scripts/approach_layout.py2.4 KB
  • scripts/approach_shell_control.py22.2 KB
  • scripts/material_docs.py2.6 KB
  • scripts/resolve_constraint_docs.py1.6 KB
  • scripts/resolve_context.py5.2 KB
  • scripts/resolve_context_docs.py1.6 KB
  • scripts/schema/approach_node_binding_schema.py5.8 KB
  • scripts/schema/approach_reopen_schema.py3.9 KB
  • scripts/schema/approach_shell_schema.py2.5 KB
  • scripts/schema/decision_package_schema.py555 B
  • scripts/tests/test_approach_layout.py2.2 KB
  • scripts/tests/test_approach_node_binding_schema.py3.1 KB
  • scripts/tests/test_approach_reopen_schema.py1.6 KB
  • scripts/tests/test_approach_shell.py5.5 KB
  • scripts/tests/test_decision_package_schema.py2 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.