CLAUDE.md · git:20260909.56b999a · 2026-09-09 · sha256 9e27a7f956ea7c6d

CLAUDE.md git:20260909.56b999aA

Immutable. This exact content is served forever at /api/v1/blob/9e27a7f956ea7c6d.

# ArchHarness — Enterprise Architecture Design & Validation

## What this is

ArchHarness is a Claude Code skill pack for enterprise architecture work.
It turns Claude into a team of architecture specialists you summon on demand.

## Available skills

| Skill | Command | Role |
|-------|---------|------|
| arch-requirements   | `/arch-requirements`    | Orchestrator — interview + multi-source intake, outputs REQ.md + req.yaml |
| arch-req-from-diagram | `/arch-req-from-diagram` | Reader — draw.io / D2 / arch YAML / PNG (vision) → partial req.yaml |
| arch-req-from-doc  | `/arch-req-from-doc`   | Reader — PDF / DOCX / MD / TXT via LLM → partial req.yaml |
| arch-req-from-api  | `/arch-req-from-api`   | Reader — CMDB / ServiceNow / CSV → partial req.yaml |
| arch-req-merge     | `/arch-req-merge`      | Merger — combine partials, conflict detection, gap report | Requirements specialist — structured interview, outputs REQ.md + req.yaml for arch-design |
| arch-validate | `/arch-validate` | Paranoid security architect — validates a diagram image against all rules |
| arch-design   | `/arch-design`   | Senior architect — designs from requirements, picks patterns, generates YAML |
| arch-diagram  | `/arch-diagram`  | Diagram generator — converts Architecture YAML → draw.io file + PNG |
| arch-enforce  | `/arch-enforce`  | CI enforcement gate — applies arch-gate-policy.yaml to validate JSON, emits PASS/WARN/BLOCK |
| arch-security | `/arch-security` | Security auditor — focused exclusively on auth, credentials, network boundaries |
| arch-review   | `/arch-review`   | Architecture committee reviewer — checks standard compliance, scores dimensions |
| arch-report   | `/arch-report`   | Technical writer — generates executive summaries and Confluence-ready docs |
| arch-optimize | `/arch-optimize` | Staff architect — identifies improvements, generates prioritized fix list |

## Configuration

All company-specific values live in **`config.yaml`** at the project root.
Edit it before first use — this is the only file you need to change.

Key fields:
- `company.name` — used in report headers and classification labels
- `datacenters` — your DC names, locations, and network zones
- `platforms` — API gateway, message bus, K8s platform names
- `paths.input_dir` / `paths.output_dir` — default input/output directories for Python tools

```yaml
# config.yaml (excerpt)
company:
  name: "Acme Corp"
datacenters:
  - id: "dc-primary"
    aliases: ["Primary DC"]
    location: { city: "Tokyo", country: "JP" }
    zones: ["DMZ", "App Zone", "DB Zone"]
platforms:
  api_gateway: "Kong API Gateway"
  message_bus: "RabbitMQ"
paths:
  input_dir: "./input"
  output_dir: "./output"
```

## Diagram generation tool

`tools/arch-diagram-gen/` — Python tool that converts Architecture YAML to draw.io XML and PNG.

```bash
# Install
pip install pyyaml matplotlib

# Generate (output goes to config.yaml > paths.output_dir by default)
python tools/arch-diagram-gen/arch_diagram_gen.py -i input/arch.yaml

# Override output explicitly
python tools/arch-diagram-gen/arch_diagram_gen.py -i arch.yaml -o out.drawio --png out.png

# Use a specific workspace project
python tools/arch-diagram-gen/arch_diagram_gen.py -i arch.yaml --project payments
```

See `tools/arch-diagram-gen/README.md` and `arch-schema-reference.yaml` for full docs.
The tool produces standard architecture shapes: hexagons for F5/FW, parallelograms for
API gateways, cylinders for databases, dashed zones, status colors.

## Standards in scope

All skills load company-specific values from `config.yaml` at runtime.
The `standards/` directory holds the platform-agnostic rules and topology requirements:
- `private-cloud-standard.yaml` — F5 ingress model, east-west isolation, PAW, DC zone models
- `aws-standard.yaml` — Hub-Spoke, ALB/WAF, API Gateway in Spoke VPC, IAM + Secrets Manager
- `azure-standard.yaml` — Hub-Spoke, App Gateway WAF v2, APIM in Spoke VNET, Key Vault

## Diagram shape spec

`standards/diagram-style.yaml` — full shape, color, arrow, and metadata rules from:
- Private Cloud Architecture Diagram Shape Specification v1.0
- Technical Architecture Diagram Specification v1.0

## Validation rules

Skills load rules from `.claude/skills/arch-validate/rules/`:
- `diagram-rules.yaml` — V- series: shape, color, arrow, legend
- `interaction-rules.yaml` — W- series: arrow direction, protocol, integration platform
- `security-rules.yaml` — S- series: auth, user auth, credential protection
- `accuracy-rules.yaml` — E- series: DC location, network segments, component completeness
- `platform-rules.yaml` — AWS/Azure/private-cloud platform-specific rules
- `compliance/terminology.yaml` — cloud terminology and ISO27001/TOGAF mapping

## Scoring

Six dimensions, 10 points total:
- Cloud_Network_Completeness (2.0), Connectivity (1.0), Technical_Component_Completeness (2.0)
- Interaction_Integration (2.0), Security_Compliance (2.0), Terminology_Expression (1.0)

## Usage pattern

1. **Design** → `/arch-design` to generate architecture YAML from requirements
2. **Validate** → `/arch-validate` with diagram image to get scored JSON report
3. **Enforce** → `/arch-enforce` to apply the CI gate policy (or skip for human review)
4. **Deep-dive security** → `/arch-security` for auth/credential/network boundary audit
5. **Standards check** → `/arch-review` for committee-style compliance scoring
6. **Fix it** → `/arch-optimize` for prioritized improvement suggestions
7. **Document it** → `/arch-report` for executive summary or Confluence page

## If skills aren't loading

Check that `.claude/skills/` is on the project path. Skills follow the
Claude Code Agent Skills open standard — each directory under `.claude/skills/`
with a `SKILL.md` is automatically registered as a slash command.

## Multi-project workspace

One ArchHarness checkout supports many isolated architecture projects.
Initialize once, then create one project per system/integration:

```bash
python -m archharness init-workspace .
python -m archharness init-project <id> [--name "..."] [--default]
python -m archharness list-projects
python -m archharness doctor [--project <id>]
```

Each project owns `projects/<id>/{input,working,output}` plus a `project.yaml`
(`id`, `name`, `platform`, `data_classification`). When you open a session inside
`projects/<id>/`, skills and CLI tools (`arch_diagram_gen.py`,
`tools/arch-req-readers/req_reader.py`) auto-detect the active project and write
into that project's `output/`. `--project <id>` selects explicitly from anywhere
in the workspace. Project data dirs are git-ignored; only `project.yaml` and the
project `README.md` are tracked.

## OpenCode usage

This project also supports OpenCode. Use `@agent-name` instead of `/skill-name`:

```
@arch-validate   →  validate a diagram image
@arch-design     →  design from requirements
@arch-enforce    →  CI gate decision (PASS/WARN/BLOCK)
@arch-security   →  security deep-dive
@arch-review     →  committee gate decision
@arch-optimize   →  prioritized fix backlog
@arch-report     →  Confluence page / exec summary
```

Agent definitions live in `.opencode/agents/`. They point to the same
`SKILL.md` files in `.claude/skills/` that Claude Code uses.
The `AGENTS.md` in this directory is the OpenCode-native equivalent of this file.