Materials Cli
Analysis
The tool mostly matches its stated image-rendering purpose, but its AI feature relies on an unreviewed local dependency that receives your OpenAI key.
Findings (4)
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.
"materials-agents": "file:../materials-agents"
The package depends on a sibling local path rather than a pinned registry package, and that dependency is not part of the supplied source files.
const child = spawn(exec, args, {
stdio: 'inherit',
shell: process.platform === 'win32'
});The CLI wrapper launches Node and forwards command-line arguments; this is purpose-aligned local code execution, but it explains the static exec warning.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
const apiKey = options.apiKey || process.env.OPENAI_API_KEY;
...
schema = await generateSchema(prompt.trim(), {
apiKey,
model: options.model || process.env.OPENAI_MODEL,
baseUrl: options.baseUrl || process.env.OPENAI_BASE_URL,
});The OpenAI API key is collected and delegated to materials-agents, with an optional custom base URL, rather than the reviewed code directly bounding the API call.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
Uses `OPENAI_API_KEY` (and optionally `OPENAI_MODEL`, `OPENAI_BASE_URL`) if not passed via flags.
The generate command is designed to communicate with OpenAI or an OpenAI-compatible endpoint; this is disclosed and purpose-aligned.
