limps-plan-operations — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited limps-plan-operations (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Provide reusable patterns for working with limps feature plans across commands. Handles plan identification, path resolution, loading plan artifacts, and shared distillation/lifecycle guidance for planning and agent execution.
process_doc / process_docs with code you authored or reviewed.plans/NNNN-descriptive-name/ format*.agent.md generationAll operations use limps MCP tools with server "limps":
list_plans - List available planslist_agents - List agents for a planprocess_doc - Read and analyze a single documentprocess_docs - Read and analyze multiple documents (e.g., all agent files)create_plan - Create a new plan structurecreate_doc - Create a new documentupdate_doc - Update an existing documentsearch_docs - Full-text search across documentscheck_staleness - Report stale plans/agents based on modification timecheck_drift - Verify agent file references match actual filesysteminfer_status - Suggest status updates based on dependency completionget_proposals - List update proposals from staleness, drift, and inferenceapply_proposal - Apply a single proposal with confirmationconfigure_scoring - Update scoring weights, presets, and biasesget_plan_status - Plan progress summary with completion percentageget_next_task - Get highest-priority available task based on scoringupdate_task_status - Update agent status (GAP/WIP/PASS/BLOCKED)reindex_docs - Clear and rebuild the search indexPath format: Always relative to configured docsPath, e.g. plans/0041-limps-improvements/0041-limps-improvements-plan.md
Tool invocation: Use call_mcp_tool with server: "limps" and the tool name.
| Goal | Tool |
|---|---|
| Find next task to work on | get_next_task |
| Check plan progress | get_plan_status |
| Find stale work | check_staleness |
| Verify file refs | check_drift |
| Suggest status changes | infer_status |
| Review all suggestions | get_proposals |
| Apply a suggestion | apply_proposal |
| Tune scoring | configure_scoring |
| Rebuild search index | reindex_docs |
When a command needs to identify which plan to work with:
plan 41, plan 0041, 0041-limps-improvements, plans/0041-limps-improvements, 0041-limps-improvements/list_plans (server: limps) to get available planslist_plansResolve input to canonical format:
0041-limps-improvements or plans/0041-limps-improvements or 0041-limps-improvements/0041-limps-improvements and base path plans/0041-limps-improvements/Rules:
plans/ prefix if present/ if presentNNNN-descriptive-name (4 digits, hyphen, descriptive name)// 1. Get user input or default
const planInput = userProvided || await getDefaultPlan();
// 2. Resolve to canonical format
const planName = resolvePlanName(planInput); // "0041-limps-improvements"
const planPath = `plans/${planName}/`; // "plans/0041-limps-improvements/"
// 3. Validate plan exists
const plans = await call_mcp_tool({
server: "limps",
toolName: "list_plans",
arguments: {}
});
const planExists = plans.some(p => p.name === planName);
if (!planExists) {
// Report error, list available plans
}When a command needs to read plan files:
plans/{plan-name}/{plan-name}-plan.md - Full feature specificationsplans/{plan-name}/interfaces.md - Contract source of truthplans/{plan-name}/README.md - Index, graph, status matrixplans/{plan-name}/gotchas.md - Discovered issues (optional, may not exist)plans/{plan-name}/agents/*.agent.md - All agent execution filesUse only `process_doc` and `process_docs` (server: limps) for reading. Do not assume other read APIs.
Single files (plan file, interfaces.md, README.md, gotchas.md):
process_doc for each fileplans/{plan-name}/{filename}.md"doc.content" to read full content, or specific extraction codeAgent files (multiple):
process_docs with pattern plans/{plan-name}/agents/*.agent.md"docs.map(d => ({ path: d.path, content: d.content }))" or specific extractionconst planName = "0041-limps-improvements";
const planPath = `plans/${planName}/`;
// Load single files
const planFile = await call_mcp_tool({
server: "limps",
toolName: "process_doc",
arguments: {
path: `${planPath}${planName}-plan.md`,
code: "doc.content"
}
});
const interfaces = await call_mcp_tool({
server: "limps",
toolName: "process_doc",
arguments: {
path: `${planPath}interfaces.md`,
code: "doc.content"
}
});
const readme = await call_mcp_tool({
server: "limps",
toolName: "process_doc",
arguments: {
path: `${planPath}README.md`,
code: "doc.content"
}
});
// Load gotchas (optional)
let gotchas = null;
try {
gotchas = await call_mcp_tool({
server: "limps",
toolName: "process_doc",
arguments: {
path: `${planPath}gotchas.md`,
code: "doc.content"
}
});
} catch (e) {
// gotchas.md doesn't exist, continue
}
// Load all agent files
const agents = await call_mcp_tool({
server: "limps",
toolName: "process_docs",
arguments: {
pattern: `${planPath}agents/*.agent.md`,
code: "docs.map(d => ({ path: d.path, content: d.content }))"
}
});Convert various plan input formats to canonical path:
0041-limps-improvements (plan name only)plans/0041-limps-improvements (with plans/ prefix)plans/0041-limps-improvements/ (with trailing slash)0041-limps-improvements/ (plan name with trailing slash)0041-limps-improvements (canonical directory name)plans/0041-limps-improvements/ (for constructing file paths)plans/0041-limps-improvements/0041-limps-improvements-plan.mdNNNN-descriptive-name where NNNN is 1-4 digits (zero-padded)Commands that use this skill:
/audit-plan - Identify plan, load artifacts for audit/update-feature-plan - Identify plan, load artifacts for updates/run-agent - Identify plan, load agent files### 1. Identify the Plan
- If user provides plan name or path, use it
- If no plan provided: call `list_plans` (server: `limps`), choose default or ask
- Resolve to plan directory name `NNNN-descriptive-name` and base path `plans/NNNN-descriptive-name/`
**Note**: Use `/limps-plan-operations identify-plan` skill for consistent plan identification.
### 2. Load Plan Artifacts
Using only `process_doc` and `process_docs` (server: `limps`), read:
- `plans/{plan-name}/{plan-name}-plan.md`
- `plans/{plan-name}/interfaces.md`
- `plans/{plan-name}/README.md`
- `plans/{plan-name}/gotchas.md` (if present)
- All agent files: `process_docs` with pattern `plans/{plan-name}/agents/*.agent.md`
**Note**: Use `/limps-plan-operations load-artifacts` skill for consistent artifact loading.const plans = await call_mcp_tool({
server: "limps",
toolName: "list_plans",
arguments: {}
});
// Choose highest-numbered plan
const defaultPlan = plans
.sort((a, b) => parseInt(b.number) - parseInt(a.number))[0];const features = await call_mcp_tool({
server: "limps",
toolName: "process_doc",
arguments: {
path: `${planPath}${planName}-plan.md`,
code: "extractFeatures(doc.content)"
}
});// Load all artifacts
const [planFile, interfaces, readme, agents] = await Promise.all([
loadPlanFile(planPath, planName),
loadInterfaces(planPath),
loadReadme(planPath),
loadAgents(planPath)
]);
// Compare interfaces with agent exports/receives
// Check dependency graph matches assignments
// Verify feature status consistencyPlan '0042-nonexistent' not found.
Available plans:
- 0041-limps-improvements
- 0040-other-feature
- 0039-another-plan
Please specify a valid plan name.If limps MCP tools are unavailable:
Error: Required file missing: plans/0041-limps-improvements/0041-limps-improvements-plan.md
Please ensure the plan directory exists and contains the plan file.process_doc and process_docs for reading plan content; do not assume other read APIsNNN_agent_descriptive-name.agent.md (zero-padded 3-digit prefix)Agent files are distilled execution context, not documentation.
If agent files are well-constructed, open-ended searching is rare. Frequent or broad searching means the distillation is too thin.
Each .agent.md should be self-contained for execution. When details must live elsewhere, include explicit cross-file references (exact file + section/heading) so the agent can do scoped lookup, not open-ended search. If an agent requires broad cross-file context, inline the relevant excerpts (distilled) or split the work so each agent remains self-contained.
For agents whose primary output is foundational types or interfaces:
{plan-name}-plan.mdinterfaces.mdREADME.mdagents/*.agent.mdCopy agents/000_agent_*.agent.md → paste to agent → done.agent.mdgotchas.md if issues found| Status | Meaning | Action |
|---|---|---|
GAP | Not started | Begin work |
WIP | In progress | Continue |
PASS | Complete | Done |
BLOCKED | Waiting on dep | Work elsewhere |
| Command | Purpose | When |
|---|---|---|
create-feature-plan | Create new plan + agent files | Starting new work |
update-feature-plan | Modify plan, regenerate agents | Mid-flight changes, interface evolution |
close-feature-agent | Verify completion, sync status | Agent finishes work |
list-plans | List available plans | Finding plans |
next-task | Select next task (no run) | Preview next task selection |
status | Assess agent status | Check status, find cleanup needs |
audit-plan | PM-style audit with health checks | Validate plan quality |
After completing agent work or during audits, use health tools in this order:
check_drift - Verify file references are still validinfer_status - Check if statuses should changecheck_staleness - Find stale agentsget_proposals - Review all suggested updatesapply_proposal - Apply approved suggestions~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.