Project Router
Analysis
The skill mostly matches its project-management purpose, but it deserves review because it can execute project-defined shell commands, apply file-write plans without path boundaries, and its MCP server calls a hard-coded external program.
Findings (5)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
const PROJECT_BIN = '/home/safa/clawd/bin/project'; ... const r = spawnSync(PROJECT_BIN, args, { encoding: 'utf8' });The MCP server executes an absolute-path binary outside the supplied file manifest, while the metadata declares no install spec or required binary. Tool calls may therefore run an unreviewed local executable if that path exists.
const planPath = path.join(projDir, 'history', 'plans', `${planId}.json`); ... const dst = path.join(root, w.path); ... fs.writeFileSync(dst, String(w.content));The apply flow reads a plan selected by an unconstrained planId and writes plan-provided paths with no normalization check that the plan file stays under the plans directory or that writes stay under the project root.
const commands = t.commands || []; ... const r = spawnSync(cmd, { cwd: root, shell: true, stdio: 'inherit', env: process.env });Target execution is disclosed and purpose-aligned, but it runs command strings from .project/targets.json through a shell with the user's environment.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
`project pm trello sync [--project <slug>]` ... `ensures the single "Safa — PM" Trello board exists` ... `upserts cards` ... `moves cards to match status`
The documented Trello sync would mutate a third-party account/workspace, but the metadata declares no primary credential or required environment variables.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
`Canonical PM is local + queryable (SQLite): projects, tasks, context packs.` ... `Recommended DB location ... /home/safa/clawd/data/pm/pm.sqlite`
The skill intentionally creates persistent project/task/context storage that can be reused across sessions.
