{"id":50833876,"url":"https://github.com/jmmonte/agentic-digital-twin","last_synced_at":"2026-06-14T02:02:23.504Z","repository":{"id":364661025,"uuid":"1268518097","full_name":"JMMonte/agentic-digital-twin","owner":"JMMonte","description":"Build engineering digital twins as code with AI agents — code-defined CAD + digital twin simulation (physics/CFD/FEA) + scored verification, with rerun for data fusion toward live closed-loop twins. Hardware-in-the-loop ready. A Claude Code plugin.","archived":false,"fork":false,"pushed_at":"2026-06-14T00:18:13.000Z","size":6274,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T00:23:09.037Z","etag":null,"topics":["agentic-ai","ai-agents","cad","claude-code","claude-code-plugin","digital-twin","digital-twin-engineering","digital-twin-simulation","hardware-in-the-loop","simulation"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JMMonte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-13T16:18:47.000Z","updated_at":"2026-06-14T00:18:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JMMonte/agentic-digital-twin","commit_stats":null,"previous_names":["jmmonte/agentic-digital-twin"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/JMMonte/agentic-digital-twin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JMMonte%2Fagentic-digital-twin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JMMonte%2Fagentic-digital-twin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JMMonte%2Fagentic-digital-twin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JMMonte%2Fagentic-digital-twin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JMMonte","download_url":"https://codeload.github.com/JMMonte/agentic-digital-twin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JMMonte%2Fagentic-digital-twin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34306772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","ai-agents","cad","claude-code","claude-code-plugin","digital-twin","digital-twin-engineering","digital-twin-simulation","hardware-in-the-loop","simulation"],"created_at":"2026-06-14T02:02:22.777Z","updated_at":"2026-06-14T02:02:23.499Z","avatar_url":"https://github.com/JMMonte.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Agentic Digital Twins, as Code\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-3DA639.svg)](LICENSE)\n[![Release](https://img.shields.io/github/v/release/JMMonte/agentic-digital-twin?color=8957E5)](https://github.com/JMMonte/agentic-digital-twin/releases)\n[![Claude Code](https://img.shields.io/badge/Claude_Code-plugin-D97757?logo=anthropic\u0026logoColor=white)](https://claude.com/claude-code)\n\n**Recommended stack** ·\n[![Python](https://img.shields.io/badge/Python-3776AB?logo=python\u0026logoColor=white)](https://www.python.org)\n[![uv](https://img.shields.io/badge/uv-DE5FE9?logo=uv\u0026logoColor=white)](https://github.com/astral-sh/uv)\n[![NumPy](https://img.shields.io/badge/NumPy-013243?logo=numpy\u0026logoColor=white)](https://numpy.org)\n[![SciPy](https://img.shields.io/badge/SciPy-8CAAE6?logo=scipy\u0026logoColor=white)](https://scipy.org)\n[![trimesh](https://img.shields.io/badge/trimesh-2C3E50)](https://github.com/mikedh/trimesh)\n[![build123d](https://img.shields.io/badge/build123d-4B8BBE)](https://github.com/gumyr/build123d)\n[![FreeCAD](https://img.shields.io/badge/FreeCAD-CB333B?logo=freecad\u0026logoColor=white)](https://www.freecad.org)\n[![PicoGK](https://img.shields.io/badge/PicoGK_·_LEAP_71-1F6FEB)](https://github.com/leap71/PicoGK)\n[![gmsh](https://img.shields.io/badge/gmsh-7B1FA2)](https://gmsh.info)\n[![CalculiX](https://img.shields.io/badge/CalculiX-455A64)](https://www.calculix.de)\n[![OpenFOAM](https://img.shields.io/badge/OpenFOAM-1565C0)](https://www.openfoam.com)\n[![SU2](https://img.shields.io/badge/SU2-0277BD)](https://su2code.github.io)\n[![Rerun](https://img.shields.io/badge/Rerun-FC4A6B)](https://rerun.io)\n\n![Agentic digital twins, as code — 3D CFD, FEA, and telemetry, all defined as code](assets/hero.png)\n\nA Claude Code plugin for building **engineering digital twins as code with AI\nagents** — code-defined geometry + **digital twin simulation** (physics, CFD,\nFEA) + scored verification, with **rerun** for visualization and data fusion\ntoward live, closed-loop twins. It packages the conventions and hard-won\ngotchas from a working modeling-and-simulation monorepo (lunar lander,\naircraft, a real-aircraft digital twin), so a new hardware / CAD / sim project\nstarts at best-practice on day one and the lessons keep accruing as you learn.\n**Hardware-in-the-loop ready.**\n\nIt is a **living artifact**: the guardrails checklist and project AGENTS.md\nare structured for new lessons, gotchas, and skills to append cleanly.\n\n## What \"digital twins as code\" means here\n\n- **Spec/geometry is code.** One source-of-truth `design.json`, mirrored\n  into the build source (e.g. `Design.cs`). Published/measured values tagged\n  `[PUB]`; everything else derived and traceable.\n- **Materials are cited, never hallucinated.** A `materials.json` source of\n  truth holds every property with a citation (MMPDS / CMH-17 / ASM / datasheet);\n  audits read from it — there's no free allowables API, so the discipline is the\n  defense. Composites cite the specific prepreg + fiber-volume-fraction + layup;\n  fluids come from CoolProp. (`add-material` skill, GUARDRAILS §8.)\n- **Every requirement gets an executable, scored audit.** PASS/WARN/FAIL,\n  exit 1 on FAIL, a markdown report. Audits read the build's exported JSON\n  artifacts — they never duplicate a geometry constant.\n- **uv single-file PEP 723 scripts** (`uv run script.py`), not venvs.\n  numpy / scipy / trimesh are the workhorses.\n- **Visualization is rerun** — one `.rrd` per concern, milestones archived,\n  every mesh gets `vertex_normals`.\n- **A verification ladder** for assemblies (components → intersections →\n  contact graph → single-island check) with joints modeled as components.\n- **FEA is tiered** — analytic audit checks → in-house numpy beam FEA →\n  gmsh + CalculiX (`ccx`) for continuum parts, each tier validated against\n  the one below (a `*BUCKLE` eigenvalue must match the analytic Euler `P_cr`).\n- **Design iteration is a scored tradeoff study with sensitivity** — pick\n  the robust option, not the one-weighting winner; only the winner gets a\n  full build.\n- **Manufacturability is an automation⇄agent blend** — the agent authors\n  judgment, automation scores it, loop until it packs.\n- **Guardrails are gold.** Silent-failure traps (a wrong boolean still\n  passes watertight; `np.interp` needs ascending `xp`; voxel kernels fail\n  silently; CFD `FLUID_MODEL` defaults) live in an append-only checklist.\n- **Two doors in.** Author geometry *as code* (`design.json` → build), **or\n  bring an existing CAD file** (`import-cad`: STEP/STL → the same audits, FEA,\n  CFD, and viz). Either way the scored-audit + cited-materials discipline applies.\n\n## What's in the plugin\n\n```\nagentic-digital-twin/\n├── .claude-plugin/\n│   ├── plugin.json            # manifest (name, version, description, author, keywords)\n│   └── marketplace.json       # single-plugin marketplace catalog (for distribution)\n├── GUARDRAILS.md              # the LIVING gotcha checklist — append new lessons here\n├── README.md\n├── agents/\n│   └── hardware-as-code-engineer.md   # the methodology subagent persona\n└── skills/\n    ├── scaffold-hw-project/   # stand up a new project at best-practice\n    │   ├── SKILL.md\n    │   └── templates/         # runnable skeletons copied into the new project:\n    │       ├── design.json            #   source-of-truth design of record\n    │       ├── Design.cs              #   build-source mirror stub\n    │       ├── audit.py               #   scored audit harness\n    │       ├── viz.py                 #   rerun visualization harness\n    │       ├── tradeoff.py            #   scored study + sensitivity + tiled compare\n    │       ├── fea_continuum.py       #   tier-3 continuum FEA (gmsh + CalculiX), anchor-gated\n    │       ├── judgment.json          #   manufacturability AGENT layer\n    │       ├── packaging_solve.py     #   manufacturability AUTOMATION layer\n    │       └── AGENTS.md              #   repository map + workflow + guardrails\n    ├── add-scored-audit/      # add one PASS/WARN/FAIL check the right way\n    ├── run-tradeoff-study/    # placement-level study + sensitivity + side-by-side\n    ├── continuum-fea/         # tier-3 stress/buckling: gmsh + CalculiX, validated vs analytic\n    ├── manufacturability-loop/# the automation⇄agent packaging loop\n    └── guardrails-check/      # apply the checklist + append new lessons\n```\n\n### Skills\n\n| Skill | What it does |\n| :-- | :-- |\n| `scaffold-hw-project` | Creates a new project with the design-of-record, a scored-audit harness, a rerun viz harness, a tradeoff-study template, the manufacturability judgment+solver pair, and an AGENTS.md + GUARDRAILS.md — all runnable skeletons, not prose. |\n| `add-scored-audit` | Adds a single executable requirement check (reads exported JSON, asserts an expected value, exits 1 on FAIL) and rejects the anti-patterns (duplicated constants, `\u003e0` instead of expected, WARN hiding a FAIL). |\n| `run-tradeoff-study` | Resolves a design fork with a placement-level scored study, a sensitivity sweep across weight schemes, and a tiled side-by-side rerun comparison; only the robust winner earns a full build. |\n| `continuum-fea` | Runs the tier-3 continuum FEA (brackets, panels, shells, lugs) with gmsh + CalculiX (`ccx`): tet-mesh → Abaqus `.inp` → solve headless → parse → VALIDATE against the analytic tier (`*BUCKLE` `P_cr` / cantilever deflection) → mesh convergence → stress field to rerun. Refuses to trust a single mesh. |\n| `manufacturability-loop` | Drives the agent-authors-judgment / automation-scores-it packaging loop (containment, collisions, mass closure, CG, retrieval) until it packs. |\n| `guardrails-check` | Sweeps the silent-failure checklist before you trust a result, and is the entry point for appending a new lesson with its regression guard. |\n\n### Agent\n\n`hardware-as-code-engineer` — a subagent persona embodying the whole\nmethodology and the guardrails, which distrusts any number not cross-checked\nagainst an anchor. Appears as `agentic-digital-twin:hardware-as-code-engineer`.\n\n## Install\n\nThis plugin is its own repo (`JMMonte/agentic-digital-twin`). Its\n`.claude-plugin/` directory holds BOTH a `plugin.json` (so the directory is\na valid plugin) and a `marketplace.json` (so the same directory doubles as a\nsingle-plugin marketplace via `\"source\": \"./\"`).\n\n### Option A — from GitHub (recommended)\n\n```bash\n/plugin marketplace add JMMonte/agentic-digital-twin\n/plugin install agentic-digital-twin@agentic-digital-twin-marketplace\n```\n\n### Option B — from a local clone\n\n```bash\ngit clone https://github.com/JMMonte/agentic-digital-twin\n/plugin marketplace add ./agentic-digital-twin        # the dir doubles as the marketplace root\n/plugin install agentic-digital-twin@agentic-digital-twin-marketplace\n# or, for one session without installing:\nclaude --plugin-dir ./agentic-digital-twin\n```\n\nValidate at any time:\n\n```bash\nclaude plugin validate ./agentic-digital-twin --strict\n```\n\n## Use\n\n```\n/agentic-digital-twin:scaffold-hw-project     # start a new project\n/agentic-digital-twin:add-scored-audit        # add a requirement check\n/agentic-digital-twin:run-tradeoff-study      # resolve a design fork\n/agentic-digital-twin:continuum-fea           # tier-3 stress/buckling (gmsh + CalculiX)\n/agentic-digital-twin:manufacturability-loop  # pack the internals\n/agentic-digital-twin:guardrails-check        # sweep the gotchas / log a lesson\n```\n\nOr just ask, and Claude invokes the right skill / the\n`hardware-as-code-engineer` agent based on the task.\n\n## How to EXTEND it (this is the point — it's a living artifact)\n\n1. **A new gotcha / lesson** → append to `GUARDRAILS.md`. Newest first,\n   dated, with symptom + cause/fix + the regression guard you added. Reusable\n   classes go in sections 1-6; project-specific in section 7. The\n   `guardrails-check` skill walks you through it. The scaffolder copies this\n   file into every new project, so improvements propagate to new projects\n   and each project also grows its own local lessons.\n\n2. **A new skill** → add `skills/\u003cname\u003e/SKILL.md` with YAML frontmatter\n   (`name` + a trigger-rich `description`). It is auto-discovered; bump\n   `version` in `plugin.json` so installed users get it.\n\n3. **A new template** → drop it in\n   `skills/scaffold-hw-project/templates/` and add a `cp` line to that\n   skill's procedure so new projects pick it up.\n\n4. **Refine the agent persona** → edit\n   `agents/hardware-as-code-engineer.md`.\n\n5. **Release** → bump `version` in BOTH `plugin.json` and the\n   `marketplace.json` entry (plugin.json wins if they differ), and note the\n   change. Without a version bump, installed users keep the cached copy.\n\n## Spec sources\n\nBuilt against the current Claude Code plugin spec:\n\n- [Plugins reference](https://code.claude.com/docs/en/plugins-reference) —\n  manifest schema, component layout, `${CLAUDE_PLUGIN_ROOT}`, validation.\n- [Plugin marketplaces](https://code.claude.com/docs/en/plugin-marketplaces)\n  — `marketplace.json` schema, `source`, `strict`.\n- [Official plugin directory](https://github.com/anthropics/claude-plugins-official).\n\nMethodology source: the `AGENTS.md` files of the `lander/`, `aircraft/`, and\n`seagull/` projects in this monorepo.\n\n## Credits\n\nHero banner rendered with [PyVista](https://pyvista.org) (`assets/hero.py`) from real 3D models:\n\n- **Boeing 777** and **Mars Reconnaissance Orbiter** — NASA (public domain).\n- **Semi-trailer truck** — © [Artec 3D](https://www.artec3d.com/3d-models/semi-trailer-truck), licensed [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmmonte%2Fagentic-digital-twin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmmonte%2Fagentic-digital-twin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmmonte%2Fagentic-digital-twin/lists"}