Skip to main content

Diagnose, generate, and maintain the AI agent setup of your projects — CLAUDE.md, skills, subagents, rules, and supporting docs.

Project description

opsward

Diagnose, generate, and maintain the AI agent setup of your projects — CLAUDE.md, skills, subagents, rules, and supporting docs.

Opsward works in two modes:

  • CLI mode — deterministic, pure-code analysis you run directly. No AI involved.
  • Claude Code mode — install opsward as Claude Code skills so that Claude runs the CLI tools, interprets results intelligently, and acts on suggestions. No API keys needed — Claude Code is the AI engine.

Install

pip install opsward

CLI Mode (no AI)

These commands are deterministic Python code — regex scoring, filesystem checks, template substitution. Same input always gives the same output.

Diagnose

Score your project's AI setup health:

opsward diagnose .
Diagnosis Report: myproject
Project type: python
Overall score: 72/100  (Grade: C)

Components:
  CLAUDE.md quality         [################....] 81/100
  Documentation             [##############......] 70/100
  Skills                    [############........] 60/100
  Setup (rules/agents/hooks) [##########..........] 50/100
  Cross-references          [####################] 100/100

Missing:
  [ ] docs_guide.md
  [ ] docs/known_issues.md

Suggestions:
  1. Create a docs_guide.md to index your documentation
  2. Consider adding hooks in .claude/hooks.json

Generate

Create missing artifacts (dry run by default):

opsward generate .
opsward generate . --write   # actually create files

Generates CLAUDE.md, docs (architecture, conventions, known_issues, etc.), skill templates, and agents — only what's missing, never overwrites existing files.

Maintain

Find stale references and drift:

opsward maintain .
myproject: 3 issue(s)

  [stale_path] CLAUDE.md references `src/old_module.py` but it does not exist
  [sync_issue] `new_doc.md` exists in docs/ but is not listed in docs_guide.md
  [empty_doc] `conventions.md` appears to be an empty stub (12 bytes)

Output Formats

All CLI commands support --format json for machine-parseable output:

opsward diagnose . --format json
opsward generate . --format json
opsward maintain . --format json

Claude Code Mode (AI-enhanced)

Install opsward's skills into Claude Code, and Claude becomes an intelligent layer on top of the deterministic tools. It doesn't just run opsward — it goes beyond the heuristic scores by reading actual source code, reasoning about accuracy, and making intelligent edits.

Install Skills

opsward install-skills --write                    # into ./.claude/ (project-level)
opsward install-skills --global-install --write   # into ~/.claude/ (all projects)

What the Skills Do

Once installed, these skills activate automatically in Claude Code when you ask the right thing:

Skill Trigger What it does
opsward "check my setup", "opsward" Diagnose → decide next step → generate or maintain → re-diagnose
opsward-diagnose "audit my AI config" Run opsward diagnose, then read code to assess semantic quality, offer fixes
opsward-generate "scaffold AI setup" Run opsward generate, then read the codebase and replace templates with real content
opsward-maintain "check for staleness" Run opsward maintain, then check for semantic drift (docs that no longer match code)

How It Works

  1. Opsward CLI runs deterministic checks (regex scoring, path validation, template substitution) — fast, reproducible, no AI
  2. Claude reads the output and adds deeper analysis: reads actual source code, checks if docs match reality, verifies commands are correct
  3. Claude proposes fixes — not just what opsward suggests, but what it discovers by understanding the code
  4. Claude applies fixes with user approval, then re-runs opsward to show improvement

The CLI provides the structural analysis. Claude provides the semantic understanding and action.

Permissions

The skills use Claude Code's standard permission model — no special permissions are assumed or required:

  • Read-only operations (reading files, searching code, running opsward diagnose): always safe, used freely
  • Write operations (creating docs, editing CLAUDE.md): Claude Code prompts the user for each action per their permission settings
  • Destructive operations (deleting files, removing content): always ask for explicit confirmation

If you want faster workflows (e.g., auto-approve file creation during generation), you can configure that in your Claude Code permission settings — but opsward skills never assume it.


What It Checks

CLAUDE.md quality (6 dimensions):

  • Commands & workflows — are build/test/lint commands documented?
  • Architecture clarity — is there a module map with role descriptions?
  • Conventions — are project-specific style rules present?
  • Conciseness — is the file scannable, not bloated?
  • Currency — do referenced paths actually exist?
  • Actionability — are instructions specific enough to act on?

Documentation completeness: docs_guide.md, architecture.md, conventions.md, known_issues.md, and content quality.

Skills & agents: SKILL.md presence, descriptions, setup-auditor agent.

Cross-references: paths in CLAUDE.md validated against the filesystem.

Overall health: weighted score (A–F grade) combining all components.

Python API

from pathlib import Path
from opsward import scan, diagnose, generate, generate_skills, maintain
from opsward import recommend_skills, validate_skill_spec

sr = scan('.')
report = diagnose(sr)
print(report)              # human-readable report card
print(report.grade)        # 'A', 'B', 'C', 'D', or 'F'

files = generate(sr)       # list[GeneratedFile]
issues = maintain(sr)      # list[MaintenanceSuggestion]

# Recommend ecosystem skills based on tech stack
recs = recommend_skills(sr)  # list[SkillRecommendation]

# Validate skills against agentskills.io spec
for skill in sr.skills:
    violations = validate_skill_spec(skill)

# Install skills programmatically
skill_files = generate_skills(Path.home() / '.claude')

CI Integration

Use opsward in CI to enforce AI setup quality:

# Fail if overall score drops below 60
opsward diagnose . --min-score 60

# Machine-parseable output for CI tooling
opsward diagnose . --format json --min-score 60
# .github/workflows/ai-setup-check.yml
name: AI Setup Check
on: [pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install opsward
      - run: opsward diagnose . --min-score 60

Related Work

Project Relationship
spec-kit (GitHub) Template-based scaffolding for 20+ AI agents. No diagnosis/scoring/maintenance.
claude-code-skill-factory Inside-agent builders for skills, agents, hooks. Good for interactive authoring.
ccexp Interactive TUI for browsing Claude Code config files. Complements opsward.
npx skills (Vercel) Cross-platform skill package manager. Opsward-generated skills are compatible.
awesome-agent-skills 549+ community skills from official dev teams.
awesome-claude-code Best single index of the Claude Code ecosystem.
wshobson/agents Pre-built plugin monorepo (72 plugins, 112 agents, 146 skills).
Mintlify skill.md Auto-generates skill.md from docs sites. Same philosophy, different input.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opsward-0.0.8.tar.gz (64.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opsward-0.0.8-py3-none-any.whl (42.6 kB view details)

Uploaded Python 3

File details

Details for the file opsward-0.0.8.tar.gz.

File metadata

  • Download URL: opsward-0.0.8.tar.gz
  • Upload date:
  • Size: 64.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for opsward-0.0.8.tar.gz
Algorithm Hash digest
SHA256 166e5d993f5728f1a210bfe59afe1f2762b0070d8a8a06c2af7a45009ce44bd2
MD5 3b700b7f99233d69c73b930a818eb1eb
BLAKE2b-256 ea7eff984447ee26c6a3561bfc9f2857ef2050486665be11c79541d8954b79eb

See more details on using hashes here.

File details

Details for the file opsward-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: opsward-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 42.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for opsward-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 1145fd82dfcd93d98ef9cfcba58d0850717541d987664a940bc49e44848aa7e0
MD5 72278a750214706555e12ee0572f8b7c
BLAKE2b-256 1a8be022e51cf8d2b282a45aa2a11e594e840f4a842fb280acd639cc1844f454

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page