About ask-light
ask-light is a user-invoked advisor that recommends a Light workflow or Skill based on the request and observed project state. It gathers evidence, validates a candidate, explains the recommendation, and waits for approval before transition.
Key features
- 01Interpret requests and workflow context
- 02Collect project evidence with a script
- 03Shortlist and assess candidate Skills
- 04Validate the selected recommendation
- 05Require approval before transition
Use cases
- 01Choosing the next Skill for current project work
- 02Finding a Skill for a standalone request
- 03Getting a bounded workflow recommendation
- 04Browsing Light Skills and their roles
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ light-cheng/ skills --skill ask-lightAfter installing, type/ask-lightin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
agents/openai.yamlreferences/discovery-contract.mdlight-skill-map.jsonmodes-and-transition.mdresult-contract.mdrouting-judgment.mdscripts/advisor.pyask_light_models.pyask_light.pyask-light.ps1compact_state_builder.pydecision_source.pysemantic_router.pystate_extractor.pytests/test_ask_light_behavior.pytest_ask_light_contract.pytest_ask_light_semantic.pytest_namespace_migration.pyDetails
From the project READMEAsk Light
ask-light is the Light workflow advisor, navigator, and router — a
user-invoked entry that understands what the user is trying to do, inspects
the actual project state, knows the Light Skills and their contracts, reasons
about the best next action, explains why, waits for approval, and transitions
into the accepted Skill where the host permits.
How it works
Code establishes facts; the model judges; code validates the choice.
scripts/ask_light.py (Python 3.9+) returns an evidence packet and never
names a Skill. Patterns in
light-skill-map.json are candidate hints
only. Full evidence, validation and approval protocol:
discovery-contract.md.
Session flow
- Interpret the request. Decide the situation: current workflow, explicit task or named Skill, new effort, standalone task, workflow overview, or collection navigation. It decides which evidence binds.
- Collect evidence. Run
python3 scripts/ask_light.py --mode next --context-json '{"projectRoot": "..."}'(add--host-namewith your Host, such asclaude-codeorcodex, and--roots-jsonwhen the collection root is known; without--host-namethe script guesses from the environment). Shortlist from the catalog in the packet; never read every SKILL.md to route. - Understand candidates. Pick 2–4 plausible Skills. Read their
SKILL.mdwhen neighbors are materially close. - Judge. Read routing-judgment.md, then pick one primary Skill and at most one alternative. Never invent state the packet contradicts.
- Validate. Run
python3 scripts/ask_light.py --mode validate --skill <name> --scope <scope>(scopes). OnBLOCKED, report the logical recommendation and the reason, and stop. Never substitute another Skill. - Explain like an advisor. Cite observed facts: why this Skill fits now and why the obvious neighbor does not (routing-judgment.md).
- Wait for approval. Execute nothing before the user explicitly agrees.
- Transition. Revalidate, then start the accepted Skill only as its invocation type and the Host's verified capability allow. Otherwise render the exact invocation and stop. Never chain past the accepted Skill (modes-and-transition.md).
Modes
$ask-light next— one next-Skill recommendation with workflow reasoning.$ask-light workflow— one bounded workflow recipe anchored at current state.$ask-light <category>— browse the collection (e.g.project Skills,review Skills,learning Skills) and explain roles and neighbors.- Plain standalone requests (
Explain this like I'm five,Investigate this bug) route without deep project inspection.
Result contract
Return the record in result-contract.md.
Optional capabilities
- Several legal Skills remain, or ambiguity or escalation is in question
→ the semantic mode (
--mode semantic) asks through the light-decide script path; when you judge without the script, calllight-decidewith question idsask-light/next-action,ask-light/material-ambiguityorask-light/reasoning-escalation. It asks only within the project'sDecision data:limit (no line means on-device) and applies an answer only when the user's policy file calibrates that question. Log the returneddecisionswith light-decide's log format. Unavailable or uncalibrated → keep the deterministic baseline. A judgment never grants transition authority; only the user's approval does.