Atlas / MCP servers / zpratt / Lousy Agents

Lousy AgentsBLOCK

mcp/zpratt/lousy-agents

Bootstrap projects with pre-configured instructions, tests, and linters that guide AI coding agents to produce reliable code

Verdict
BLOCK
Grade
F
Trust score
53 /100
Exposed tools
22 16r · 6w · 0d
Transport
stdio
License
BSD-2-Clause-Patent
Stars
13
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://scorecard.dev/viewer/?uri=github.com/zpratt/lousy-agents)

Turn "lousy" AI outputs into production-grade code.

TL;DR

Lousy Agents is a set of published npm packages for agentic software development, with @lousy-agents/cli as the main entry point. Run npx @lousy-agents/cli init to create a new project with testing, linting, and GitHub Copilot configuration. Run npx @lousy-agents/cli copilot-setup in existing projects to generate a workflow that gives Copilot your environment context. Add @lousy-agents/mcp for MCP integrations and @lousy-agents/agent-shell for npm script telemetry when you need them.

Lousy Agents is an npm workspace monorepo that publishes focused packages for scaffolding, MCP integrations, and npm script telemetry. The CLI package gives you a production-ready development environment with testing, linting, and AI assistant configuration in one command.

Quick Start

# Scaffold a new webapp project (no install required)
npx @lousy-agents/cli init --kind webapp

# Or use interactive mode to choose your project type
npx @lousy-agents/cli init

# Generate GitHub Copilot setup workflow from your project configuration
npx @lousy-agents/cli copilot-setup

Table of Contents

  • Start Here
  • Who This Is For
  • Why This Exists
  • Features
  • Installation
  • Usage
  • Contributing
  • Roadmap
  • Documentation
  • Reference Examples

Start Here

If you're adopting Lousy Agents for the first time, use this order:

  1. Scaffold a project with npx @lousy-agents/cli init
  2. Add repository-specific setup with npx @lousy-agents/cli copilot-setup
  3. Add deeper integrations only if you need them:
  4. `@lousy-agents/mc
Read from source at commit 816e4c351244OBSERVED · 2026-10-12
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add mcp --env GH_TOKEN=${GH_TOKEN} --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y @lousy-agents/[email protected]
claude-desktop
{
  "mcpServers": {
    "mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@lousy-agents/[email protected]"
      ],
      "env": {
        "GH_TOKEN": "${GH_TOKEN}",
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}
03

Exposed tools (22)

16 read · 6 write · 0 destructive.

ToolRiskDescription
analyze_action_versionsreadAnalyze GitHub Action versions used across all workflow files in a target directory
analyze_instruction_qualityreadAnalyze the structural quality of feedback loop documentation in instruction files. Assesses structural context, execution clarity, and loop completeness across all supported instruction formats.
capturewriteGenerate a lesson capture prompt for Stop/SubagentStop Claude hooks
contextreadInject relevant lessons into Claude hooks as additionalContext
copilot-setupwriteGenerate or update the Copilot Setup Steps workflow based on detected environment configuration
create_claude_code_web_setupwriteCreate or update Claude Code web environment setup (.claude/settings.json with SessionStart hooks and CLAUDE.md documentation) based on detected environment configuration.
create_copilot_setup_workflowwriteCreate or update the Copilot Setup Steps workflow (copilot-setup-steps.yml) based on detected environment configuration. Returns actions needing version resolution and instructions for SHA-pinning.
discover_environmentreadDiscover environment configuration files (mise.toml, version files like .nvmrc, .python-version, etc.) in a target directory
discover_feedback_loopsreadDiscover npm scripts from package.json and CLI tools from GitHub Actions workflows, mapping them to SDLC feedback loop phases (test, build, lint, format, security, etc.)
discover_workflow_setup_actionsreadDiscover setup actions used in existing GitHub Actions workflows in a target directory
doctorreadDiagnose agentic configuration across harnesses: inventory, classify, and evaluate preconditions
initreadInitialize a new project with lousy agents scaffolding
init-hooksreadInitialize Claude Code hook configuration for lousy-agents context injection
lessonsreadValidate lesson files in .lousy-agents/lessons/ against the lesson schema
lintreadLint agent skills, custom agents, instruction files, and hook configurations. Validates frontmatter, instruction quality, and hook config schemas. Also supports flag-only (not default-on) subagent and MCP server config linting. Run
newwriteCreate new resources (e.g., Copilot agents, skills). Use
read_copilot_setup_workflowreadRead the existing Copilot Setup Steps workflow (copilot-setup-steps.yml or .yaml) from a target directory
resolve_action_versionsreadGet version resolution metadata for GitHub Actions. Returns lookup URLs and instructions for the LLM to fetch latest versions and SHA-pin them. Can be called independently of workflow creation.
reviewerreadA reviewer subagent
securityreadA security agent
skillwriteCreate a new GitHub Copilot Agent Skill. Example: lousy-agents new skill github-actions-debug
validate_instruction_coveragereadValidate that repository instructions (.github/copilot-instructions.md and .github/instructions/*.md) document all mandatory feedback loop scripts and tools. Returns coverage percentage and suggestions for missing documentation.
04

Trust audit

BLOCKgrade F · trust 53/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (5 observation(s))
Shell
declared (8 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.semgrep/node-security.ts:31
exec(cmd);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.semgrep/node-security.yaml:144
- pattern: exec($CMD,...)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.semgrep/node-security.yaml:257
injection risk applies to exec('git clone ' + url),
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/curate-release
.claude/skills/curate-release
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/feature-to-plan
.claude/skills/feature-to-plan
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/mutation-hunter
.claude/skills/mutation-hunter
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/plan-to-graph
.claude/skills/plan-to-graph
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/rugged-evil-tester
.claude/skills/rugged-evil-tester
Why it matters. link not followed
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/cli/api/copilot-with-fastify/src/app.integration.ts:14
baseUrl = `http://127.0.0.1:${address.port}`;
LOWInventory / provenance · inv.hidden_file · CWE-1104
.dependency-cruiser.cjs
.dependency-cruiser.cjs
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.dependency-cruiser.webpack.cjs
.dependency-cruiser.webpack.cjs
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.graphifyignore
.graphifyignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.graphifyinclude
.graphifyinclude
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/action/src/validate-inputs.test.ts:102
validateDirectory("foo/../../bar"),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/agent-shell/tests/copilot-enhance.test.ts:42
const result = resolveSafePath(repoRoot, "../../etc/passwd");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/agent-shell/tests/copilot-enhance.test.ts:52
"src/../../../../../../etc/shadow",
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/agent-shell/tests/copilot-enhance.test.ts:88
const result = resolveSafePath("/", "../../etc/passwd");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/agent-shell/tests/copilot-enhance.test.ts:100
const result = resolveSafePath("/", "../../../");
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
packages/agent-shell/tests/policy-init.test.ts:352
{ name: "test|tee /tmp/exfil", command: "vitest run" },
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
packages/agent-shell/tests/policy-init.test.ts:364
expect(policy.allow).not.toContain("mise run test|tee /tmp/exfil");
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
packages/core/src/gateways/environment-gateway.test.ts:43
it("should reject to prevent symlink-based file exfiltration", async () => {
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/cli/package.json
@lousy-agents/agentic-doctor, @lousy-agents/core, @lousy-agents/lint
Why it matters. 3 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/doctor/package.json
@lousy-agents/core
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/lint/package.json
@lousy-agents/core
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 816e4c351244full audit observations/trust-audit/mcp-server/zpratt__lousy-agents.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12816e4c351244BLOCKF53first audit
06

Questions

What is the @lousy-agents/mcp MCP server?

Bootstrap projects with pre-configured instructions, tests, and linters that guide AI coding agents to produce reliable code

What tools does @lousy-agents/mcp expose?

22 in total: 16 read-only, 6 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @lousy-agents/mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (53/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does @lousy-agents/mcp need?

It reads GH_TOKEN and GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @lousy-agents/mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @lousy-agents/mcp at 1.0.2.

How current is this page?

The grade is for one exact copy of the source (816e4c351244), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement