{"id":"97f15f83-a0e1-4e2e-a5f2-32663362c6dc","shortId":"pmUVHG","kind":"skill","title":"sruja-architecture","tagline":"Discovers architecture from codebases and authors Sruja DSL (repo.sruja). Use when discovering architecture, generating or refactoring repo.sruja, validating architecture against code, maintaining architecture docs, or when the user mentions architecture-as-code, C4, or .sruja fi","description":"# Sruja Architecture Skill\n\nDeterministic, evidence-first workflow for generating and maintaining `repo.sruja` (or `architecture.sruja`). The skill guides the AI to write valid architecture from real code evidence; no DSL expertise required.\n\n## Quick Start\n\n1. **Evidence** — If `.sruja/context.json` exists and is recent (e.g. `updated_at` within last hour), use it. Else run `sruja sync -r .` (do not ask the user to run it).\n2. **Questions** — Ask 2–5 targeted questions only when evidence is ambiguous (boundaries, externals, datastores, deployment, data flows).\n3. **Generate** — Produce minimal `repo.sruja` from evidence (C4 context + containers; components only when justified).\n4. **Validate** — Run `sruja lint repo.sruja` and fix all errors before considering complete.\n5. **Refine** — Optionally run `sruja drift -r .` and update DSL from drift results.\n6. **Impact (Optional)** — Before refactoring code, run `sruja impact <target> -r . --depth 3` to quickly see upstream dependents and downstream dependencies.\n\nWorkflow checklist: `[ ] Evidence gathered → [ ] Questions (if needed) → [ ] repo.sruja generated → [ ] sruja lint passed → [ ] Open questions listed (no guessing)`\n\n## Core Principles\n\n- **Evidence-first** — Gather evidence before modeling.\n- **No guessing** — Surface open questions instead of fabricating answers.\n- **Minimal DSL** — Generate only what evidence supports.\n- **Validation** — Always lint and fix errors before considering complete.\n\n## Evidence and Discovery\n\nDiscovery is backed by a **static analysis graph** (Tree-sitter): modules, imports, and dependencies from supported languages (TypeScript, Python, Go, Rust, Java, C#, Ruby, etc.). Use this graph as the single source of truth; prefer it over guessing.\n\n**Progressive loading (large or multi-repo):**\n\n| Tier | Source | Use when |\n|------|--------|----------|\n| 0 | MCP: `sruja_list_architecture_index` → `sruja_get_topology` → `sruja_get_elements` | In Cursor/Copilot with Sruja MCP — prefer over pasting full architecture |\n| 1 | `.sruja/context.json` (summary) | Default: \"what areas exist?\", \"how big?\" |\n| 2 | `.sruja/graph.json` (slice by area/module) | Reasoning about a specific area (e.g. \"dependencies of auth\") |\n| 3 | Full `.sruja/graph.json` or `sruja scan -r . -o -` | Deep task: full dependency list, export |\n\nIf context is missing or stale, run `sruja sync -r .` or `sruja discover --context -r . --format json` yourself. After generating, suggest **Sruja: Refresh repo context** or `sruja sync -r .` for next time.\n\nEvidence provides: repository structure, detected technologies, module boundaries, entry points, external dependencies, scan scope.\n\n## Workflow (Detail)\n\n### 1. Collect Evidence\n\nPrefer `.sruja/context.json` when present and recent (`updated_at`, `truth_status`, `baseline_path`, `git_commit`). If missing or stale, run:\n\n```bash\nsruja sync -r .\n```\n\nOr JSON only: `sruja discover --context -r . --format json`\n\n### 2. Ask Targeted Questions\n\nOnly when evidence is ambiguous:\n\n- Main system boundaries? External services? Datastores? Deployment? Main data flows?\n\nDo not ask about information already clear from evidence.\n\n### 3. Generate Minimal DSL\n\nMinimal `repo.sruja` from evidence. C4 context and container levels first; component level only when evidence justifies it.\n\n```sruja\nimport { * } from 'sruja.ai/stdlib'\n\nPerson = person \"Person\"\nExternalAPI = system \"External API\" { description \"Third-party or backend service\" }\n\nSystem = system \"System\" {\n  Container = container \"Container\" {\n    technology \"Technology\"\n    description \"Description\"\n  }\n}\n\nPerson -> System.Container \"Protocol\"\nSystem.Container -> ExternalAPI \"HTTPS\"\n```\n\n**Component knowledge (opt-in):** Ask the user if they want per-component markdown under `.sruja/knowledge/`. If yes: one file per component (e.g. `.sruja/knowledge/PaymentService.md`), add `doc \".sruja/knowledge/<Id>.md\"` on the element, use `references/KNOWLEDGE_TEMPLATE.md`. Scope: containers and key systems; quality over coverage.\n\n**Doc references — markdown only:** In `.sruja` files, `doc` must point to **markdown** (e.g. `.sruja/knowledge/Component.md`, `docs/README.md`, or a generated knowledge base). Do **not** set `doc` to source code paths (e.g. `.rs`, `.ts`, `crates/...`). The markdown itself may link to or reference code; the separation is: Sruja DSL elements reference markdown via `doc`, and that markdown can refer to files.\n\n**Sources (specs and infra artifacts):** Use `source <kind> \"<path>\"` inside an element body to bind code-adjacent artifacts (OpenAPI specs, Kubernetes manifests, Terraform modules, docs) to the architecture element they describe. This keeps architecture grounded in real, reviewable files without requiring the user to write DSL.\n\n```sruja\nPayments = container \"Payments API\" {\n  technology \"Go\"\n  description \"Handles payment processing\"\n\n  source openapi \"./specs/payments.yaml\"\n  source kubernetes \"./k8s/payments/\"\n  source terraform \"./infra/payments/\"\n  source docs \"./docs/payments.md\"\n}\n```\n\nSupported kinds include: `openapi`, `asyncapi`, `kubernetes` (`k8s`), `dockerfile` (`docker`), `terraform` (`tf`), `docs` (`doc`), `readme`, `proto` (`protobuf`), `config`, `graphql` (`gql`), `helm`, and `custom`.\n\n### 4. Validate and Repair\n\n```bash\nsruja lint repo.sruja\n```\n\nFix all errors. Common: E201 (invalid kind), E204 (circular deps), E205 (orphans), E206 (invalid refs).\n\n### 5. Refine (Optional)\n\n```bash\nsruja drift -r .\n```\n\nUse drift results to refine `repo.sruja`. Use `-a path` to specify a different architecture file.\n\n## Operating Modes\n\n1. **Local authoring** — Create/update `repo.sruja` from evidence + questions; generate minimal DSL; run `sruja lint`.\n2. **System context** — Use discover output or `.sruja/context.json` for the slice relevant to the task; prefer canonical IDs from evidence.\n3. **Drift refinement** — After code/intent changes, use `sruja drift -r .` (and optionally `sruja intent propose`) to turn deltas into DSL updates or open questions; do not invent without evidence.\n4. **Multi-repo** — When `system.index.json` exists (from `sruja compose`), load only the **impacted slice**; use canonical IDs `repo_id::local_id`; check `conflicts` and ownership. See **docs/FEDERATION.md**.\n\n## When to Apply\n\n- Discovering architecture from a new codebase\n- Generating initial repo.sruja from requirements\n- Refactoring or updating existing architecture\n- Validating architecture against code\n- Maintaining architecture documentation\n\n## What NOT to Do\n\n- Do not guess missing information — list open questions.\n- Do not add framework/domain/security narratives without evidence.\n- Do not create components for completeness only.\n- Do not add relationships unsupported by evidence.\n- Do not skip linting.\n- Do not set `doc` on elements to source code paths (e.g. `crates/foo/src/lib.rs`, `extension/src/bar.ts`). Use markdown only; the markdown can reference code.\n\n## Open Questions\n\nSurface missing or unclear information explicitly in comments:\n\n```sruja\n// OPEN QUESTIONS:\n// - How is authentication implemented?\n// - What message queue is used for async operations?\n// - External API integrations not detected?\n```\n\n## Multi-repo (Publish and Compose)\n\n**Setup:** See [FEDERATION_SETUP_GUIDE.md](../../docs/FEDERATION_SETUP_GUIDE.md) for step-by-step instructions.\n\n**Workflow:**\n1. **Per-repo:** Generate `repo.sruja` in each repository (same as single-repo workflow)\n2. **Publish:** In each repo: `sruja publish -r . -o repo.bundle.json`\n3. **Collect:** Copy bundles to shared location (rename to avoid collisions: `api.repo.bundle.json`)\n4. **Compose:** `sruja compose -i <dir> -o system.index.json` builds unified graph with canonical IDs\n5. **Resolve conflicts:** Check `conflicts` array for duplicate kind+label across repos\n\n**When working across repos:**\n- Use canonical IDs: `repo_id::local_id` (e.g., `api-service::PaymentAPI`)\n- Load only impacted slice from `system.index.json`, not full graph\n- Check ownership before modifying cross-repo relationships\n\n**Prompt for multi-repo setup:**\n```\nUse sruja-architecture. Help me set up federation across multiple repos.\nGuide me through: 1) generating repo.sruja in each repo, 2) publishing bundles,\n3) composing system.index.json. Reference docs/FEDERATION_SETUP_GUIDE.md for steps.\n```\n\nSee **docs/FEDERATION.md** for artifact schemas and retrieval behavior.\n\n## Progressive Discovery — What to Load When\n\nDo not load `references/AGENTS.md`, `references/REFERENCE.md`, or entire `rules/` at once. Load only what the task needs:\n\n| Task | Load only |\n|------|-----------|\n| Baseline / discovery | `rules/sdlc/create-phase.md`, `references/PROMPTS.md` (Discovery) |\n| Component knowledge | `references/KNOWLEDGE_TEMPLATE.md` |\n| Update / drift | `rules/sdlc/update-phase.md`, `references/REFERENCE.md` (SDLC update) |\n| Impact analysis | `rules/query/impact-analysis.md` |\n| Requirement traceability | `rules/requirements/capture-requirements.md`, `rules/requirements/link-requirements.md`; `references/PROMPTS.md` if needed |\n| Compliance | `rules/query/compliance-check.md` |\n| Deep semantic discovery | `rules/query/scip-discovery.md` |\n| Full design / refactor / patterns | `references/AGENTS.md` |\n\n## Related References\n\n- Discovery and refinement: `references/REFERENCE.md`\n- Modeling rules: `rules/` (per-task; see table above)\n- Prompts: `references/PROMPTS.md`; `references/AGENTS.md` only for full design/refactor\n- Multi-repo setup: **docs/FEDERATION_SETUP_GUIDE.md** (step-by-step)\n- Multi-repo reference: **docs/FEDERATION.md** (schemas, commands)\n\n## Prerequisites and Installation\n\n**CLI:** Workflow uses `sruja sync`, `sruja discover`, `sruja lint`, `sruja drift`, and (optionally) `sruja impact`. Install a CLI that includes `sync` and `discover`:\n\n```bash\ncurl -fsSL https://sruja.ai/install.sh | bash\n```\n\nOr from repo: `cargo install --path crates/sruja-cli`. Verify with `sruja --help` (must list `sync` and `discover`). If the CLI lacks these, the skill falls back to repo structure and codebase only; upgrade via the install script or repo build.\n\n**Extension (optional):** [Sruja extension](https://marketplace.visualstudio.com/items?itemName=SrujaAI.sruja) — syntax, diagnostics, **Sruja: Run validation**, diagram preview, export to Markdown, **Sruja: Refresh repo context**. When installed, run Refresh once (or after big changes); the skill prefers `.sruja/context.json`.\n\n**Install skill:**\n\n```bash\nnpx skills add https://github.com/sruja-ai/sruja --skill sruja-architecture\n```\n\n## Retrieval Order (Architecture-Aware Codegen/Review)\n\n1. Local repo truth — `repo.sruja` (or `architecture.sruja`)\n2. Fresh evidence — `.sruja/context.json` (Tree-sitter); if missing/stale, run `sruja sync -r .` or suggest **Sruja: Refresh repo context**. For deep semantic context, check/generate `index.scip` (SCIP) first.\n3. Slice from system index — If `system.index.json` exists, load only impacted slice; use canonical IDs `repo_id::local_id`\n4. Intent and contract refs — ADRs, intent files from repo or bundle\n5. Truth/drift — `.sruja/context.json` or `sruja status -r . --format json`\n\nPrefer canonical IDs; do not invent when context is missing — ask or mark `unknown`.\n\n## Quick Start Prompt\n\n**Single repo:**\n```\nUse sruja-architecture skill. If .sruja/context.json exists and is recent, use it for evidence; otherwise run `sruja sync -r .` or `sruja discover --context -r . --format json`. Gather evidence, ask targeted questions only if scope or externals are unclear, generate a minimal repo.sruja with evidence-based components and relationships, then run `sruja lint` and fix all errors until it passes. Do not guess; list open questions instead.\n```\n\n**Multi-repo:**\n```\nUse sruja-architecture skill. Help me set up federation across multiple repos.\n1) First, help me generate repo.sruja in each repository.\n2) Then guide me through publishing bundles and composing system.index.json.\nReference docs/FEDERATION_SETUP_GUIDE.md for detailed steps.\n```\n\n**Optional Cursor rule:** \"For architecture tasks, use `.sruja/context.json` when present and recent; else run `sruja sync -r .` or `sruja discover --context -r . --format json`. For multi-repo, use impacted slice from `system.index.json` when available; see docs/FEDERATION_SETUP_GUIDE.md.\"","tags":["sruja","architecture","sruja-ai","adr","agent-skills","ai-driven-development","architecture-as-code","architecture-governance","developer-tools","governance","rust-lang","software-architecture"],"capabilities":["skill","source-sruja-ai","skill-sruja-architecture","topic-adr","topic-agent-skills","topic-ai-driven-development","topic-architecture","topic-architecture-as-code","topic-architecture-governance","topic-developer-tools","topic-governance","topic-rust-lang","topic-software-architecture","topic-system-design","topic-wasm"],"categories":["sruja"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sruja-ai/sruja/sruja-architecture","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sruja-ai/sruja","source_repo":"https://github.com/sruja-ai/sruja","install_from":"skills.sh"}},"qualityScore":"0.458","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 17 github stars · SKILL.md body (12,308 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:06:09.943Z","embedding":null,"createdAt":"2026-04-18T23:06:45.664Z","updatedAt":"2026-05-18T19:06:09.943Z","lastSeenAt":"2026-05-18T19:06:09.943Z","tsv":"'/../docs/federation_setup_guide.md':964 '/docs/payments.md':680 '/infra/payments':677 '/install.sh':1241 '/items?itemname=srujaai.sruja)':1288 '/k8s/payments':674 '/specs/payments.yaml':671 '/sruja-ai/sruja':1324 '/stdlib''':482 '0':286 '1':75,308,393,750,972,1088,1335,1512 '2':104,107,317,428,764,987,1094,1342,1521 '3':122,173,331,456,784,997,1097,1369 '4':136,703,813,1009,1388 '5':108,149,726,1022,1400 '6':162 'across':1032,1036,1082,1509 'add':538,881,895,1321 'adjac':628 'adr':1393 'ai':60 'alreadi':452 'alway':225 'ambigu':115,436 'analysi':242,1152 'answer':216 'api':489,662,951,1047 'api-servic':1046 'api.repo.bundle.json':1008 'appli':843 'architectur':3,5,16,22,26,34,42,64,290,307,639,645,746,845,859,861,865,1076,1328,1332,1431,1502,1540 'architecture-as-cod':33 'architecture-awar':1331 'architecture.sruja':55,1341 'area':313,326 'area/module':321 'array':1027 'artifact':617,629,1107 'ask':98,106,429,449,518,1419,1457 'async':948 'asyncapi':685 'auth':330 'authent':940 'author':9,752 'avail':1570 'avoid':1006 'awar':1333 'back':238,1267 'backend':495 'base':574,1474 'baselin':406,1137 'bash':415,707,729,1236,1242,1318 'behavior':1111 'big':316,1310 'bind':625 'bodi':623 'boundari':116,384,439 'build':1016,1281 'bundl':1000,1096,1399,1527 'c':259 'c4':37,129,464 'canon':780,829,1020,1039,1382,1410 'cargo':1246 'chang':789,1311 'check':835,1025,1059 'check/generate':1365 'checklist':183 'circular':719 'clear':453 'cli':1213,1230,1261 'code':24,36,67,167,581,595,627,863,912,924 'code-adjac':626 'code/intent':788 'codebas':7,849,1272 'codegen/review':1334 'collect':394,998 'collis':1007 'command':1209 'comment':934 'commit':409 'common':714 'complet':148,232,891 'complianc':1161 'compon':132,470,513,526,535,889,1142,1475 'compos':822,960,1010,1012,1098,1529 'config':697 'conflict':836,1024,1026 'consid':147,231 'contain':131,467,500,501,502,548,660 'context':130,346,358,369,424,465,766,1302,1360,1364,1416,1451,1556 'contract':1391 'copi':999 'core':199 'coverag':554 'crate':586 'crates/foo/src/lib.rs':915 'crates/sruja-cli':1249 'creat':888 'create/update':753 'cross':1064 'cross-repo':1063 'curl':1237 'cursor':1537 'cursor/copilot':299 'custom':702 'data':120,445 'datastor':118,442 'deep':339,1163,1362 'default':311 'delta':801 'dep':720 'depend':178,181,250,328,342,388 'deploy':119,443 'depth':172 'describ':642 'descript':490,505,506,665 'design':1168 'design/refactor':1193 'detail':392,1534 'detect':381,954 'determinist':44 'diagnost':1290 'diagram':1294 'differ':745 'discov':4,15,357,423,768,844,1219,1235,1258,1450,1555 'discoveri':235,236,1113,1138,1141,1165,1174 'doc':27,539,555,562,578,605,636,679,692,693,907 'docker':689 'dockerfil':688 'docs/federation.md':840,1105,1207 'docs/federation_setup_guide.md':1101,1198,1532,1572 'docs/readme.md':569 'document':866 'downstream':180 'drift':154,160,731,734,785,792,1146,1223 'dsl':11,70,158,218,459,600,657,760,803 'duplic':1029 'e.g':83,327,536,567,583,914,1045 'e201':715 'e204':718 'e205':721 'e206':723 'element':297,544,601,622,640,909 'els':91,1548 'entir':1124 'entri':385 'error':145,229,713,1485 'etc':261 'evid':46,68,76,113,128,184,202,205,222,233,377,395,434,455,463,474,756,783,812,885,899,1344,1442,1456,1473 'evidence-bas':1472 'evidence-first':45,201 'exist':79,314,819,858,1376,1435 'expertis':71 'explicit':932 'export':344,1296 'extens':1282,1285 'extension/src/bar.ts':916 'extern':117,387,440,488,950,1464 'externalapi':486,511 'fabric':215 'fall':1266 'feder':1081,1508 'federation_setup_guide.md':963 'fi':40 'file':533,561,612,650,747,1395 'first':47,203,469,1368,1513 'fix':143,228,711,1483 'flow':121,446 'format':360,426,1407,1453,1558 'framework/domain/security':882 'fresh':1343 'fssl':1238 'full':306,332,341,1057,1167,1192 'gather':185,204,1455 'generat':17,50,123,190,219,364,457,572,758,850,976,1089,1467,1516 'get':293,296 'git':408 'github.com':1323 'github.com/sruja-ai/sruja':1322 'go':256,664 'gql':699 'graph':243,264,1018,1058 'graphql':698 'ground':646 'guess':198,209,274,873,1491 'guid':58,1085,1523 'handl':666 'helm':700 'help':1077,1253,1504,1514 'hour':88 'https':512 'id':781,830,832,834,1021,1040,1042,1044,1383,1385,1387,1411 'impact':163,170,826,1052,1151,1227,1379,1565 'implement':941 'import':248,478 'includ':683,1232 'index':291,1373 'index.scip':1366 'inform':451,875,931 'infra':616 'initi':851 'insid':620 'instal':1212,1228,1247,1277,1304,1316 'instead':213,1495 'instruct':970 'integr':952 'intent':797,1389,1394 'invalid':716,724 'invent':810,1414 'java':258 'json':361,420,427,1408,1454,1559 'justifi':135,475 'k8s':687 'keep':644 'key':550 'kind':682,717,1030 'knowledg':514,573,1143 'kubernet':632,673,686 'label':1031 'lack':1262 'languag':253 'larg':277 'last':87 'level':468,471 'link':591 'lint':140,192,226,709,763,903,1221,1481 'list':196,289,343,876,1255,1492 'load':276,823,1050,1116,1120,1128,1135,1377 'local':751,833,1043,1336,1386 'locat':1003 'main':437,444 'maintain':25,52,864 'manifest':633 'mark':1421 'markdown':527,557,566,588,603,608,918,921,1298 'marketplace.visualstudio.com':1287 'marketplace.visualstudio.com/items?itemname=srujaai.sruja)':1286 'may':590 'mcp':287,302 'md':541 'mention':32 'messag':943 'minim':125,217,458,460,759,1469 'miss':348,411,874,928,1418 'missing/stale':1350 'mode':749 'model':207,1178 'modifi':1062 'modul':247,383,635 'multi':280,815,956,1070,1195,1204,1497,1562 'multi-repo':279,814,955,1069,1194,1203,1496,1561 'multipl':1083,1510 'must':563,1254 'narrat':883 'need':188,1133,1160 'new':848 'next':375 'npx':1319 'o':338,995,1014 'one':532 'open':194,211,806,877,925,936,1493 'openapi':630,670,684 'oper':748,949 'opt':516 'opt-in':515 'option':151,164,728,795,1225,1283,1536 'order':1330 'orphan':722 'otherwis':1443 'output':769 'ownership':838,1060 'parti':493 'pass':193,1488 'past':305 'path':407,582,741,913,1248 'pattern':1170 'payment':659,661,667 'paymentapi':1049 'per':525,534,974,1182 'per-compon':524 'per-repo':973 'per-task':1181 'person':483,484,485,507 'point':386,564 'prefer':271,303,396,779,1314,1409 'prerequisit':1210 'present':399,1545 'preview':1295 'principl':200 'process':668 'produc':124 'progress':275,1112 'prompt':1067,1187,1425 'propos':798 'proto':695 'protobuf':696 'protocol':509 'provid':378 'publish':958,988,993,1095,1526 'python':255 'qualiti':552 'question':105,110,186,195,212,431,757,807,878,926,937,1459,1494 'queue':944 'quick':73,175,1423 'r':95,155,171,337,354,359,373,418,425,732,793,994,1354,1406,1447,1452,1552,1557 'readm':694 'real':66,648 'reason':322 'recent':82,401,1438,1547 'ref':725,1392 'refactor':19,166,855,1169 'refer':556,594,602,610,923,1100,1173,1206,1531 'references/agents.md':1121,1171,1189 'references/knowledge_template.md':546,1144 'references/prompts.md':1140,1158,1188 'references/reference.md':1122,1148,1177 'refin':150,727,737,786,1176 'refresh':367,1300,1306,1358 'relat':1172 'relationship':896,1066,1477 'relev':775 'renam':1004 'repair':706 'repo':281,368,816,831,957,975,985,991,1033,1037,1041,1065,1071,1084,1093,1196,1205,1245,1269,1280,1301,1337,1359,1384,1397,1427,1498,1511,1563 'repo.bundle.json':996 'repo.sruja':12,20,53,126,141,189,461,710,738,754,852,977,1090,1339,1470,1517 'repositori':379,980,1520 'requir':72,652,854,1154 'resolv':1023 'result':161,735 'retriev':1110,1329 'review':649 'rs':584 'rubi':260 'rule':1125,1179,1180,1538 'rules/query/compliance-check.md':1162 'rules/query/impact-analysis.md':1153 'rules/query/scip-discovery.md':1166 'rules/requirements/capture-requirements.md':1156 'rules/requirements/link-requirements.md':1157 'rules/sdlc/create-phase.md':1139 'rules/sdlc/update-phase.md':1147 'run':92,102,138,152,168,351,414,761,1292,1305,1351,1444,1479,1549 'rust':257 'scan':336,389 'schema':1108,1208 'scip':1367 'scope':390,547,1462 'script':1278 'sdlc':1149 'see':176,839,962,1104,1184,1571 'semant':1164,1363 'separ':597 'servic':441,496,1048 'set':577,906,1079,1506 'setup':961,1072,1197 'share':1002 'singl':267,984,1426 'single-repo':983 'sitter':246,1348 'skill':43,57,1265,1313,1317,1320,1325,1432,1503 'skill-sruja-architecture' 'skip':902 'slice':319,774,827,1053,1370,1380,1566 'sourc':268,283,580,613,619,669,672,675,678,911 'source-sruja-ai' 'spec':614,631 'specif':325 'specifi':743 'sruja':2,10,39,41,93,139,153,169,191,288,292,295,301,335,352,356,366,371,416,422,477,560,599,658,708,730,762,791,796,821,935,992,1011,1075,1216,1218,1220,1222,1226,1252,1284,1291,1299,1327,1352,1357,1404,1430,1445,1449,1480,1501,1550,1554 'sruja-architectur':1,1074,1326,1429,1500 'sruja.ai':481,1240 'sruja.ai/install.sh':1239 'sruja.ai/stdlib''':480 'sruja/context.json':78,309,397,771,1315,1345,1402,1434,1543 'sruja/graph.json':318,333 'sruja/knowledge':529,540 'sruja/knowledge/component.md':568 'sruja/knowledge/paymentservice.md':537 'stale':350,413 'start':74,1424 'static':241 'status':405,1405 'step':967,969,1103,1200,1202,1535 'step-by-step':966,1199 'structur':380,1270 'suggest':365,1356 'summari':310 'support':223,252,681 'surfac':210,927 'sync':94,353,372,417,1217,1233,1256,1353,1446,1551 'syntax':1289 'system':438,487,497,498,499,551,765,1372 'system.container':508,510 'system.index.json':818,1015,1055,1099,1375,1530,1568 'tabl':1185 'target':109,430,1458 'task':340,778,1132,1134,1183,1541 'technolog':382,503,504,663 'terraform':634,676,690 'tf':691 'third':492 'third-parti':491 'tier':282 'time':376 'topic-adr' 'topic-agent-skills' 'topic-ai-driven-development' 'topic-architecture' 'topic-architecture-as-code' 'topic-architecture-governance' 'topic-developer-tools' 'topic-governance' 'topic-rust-lang' 'topic-software-architecture' 'topic-system-design' 'topic-wasm' 'topolog':294 'traceabl':1155 'tree':245,1347 'tree-sitt':244,1346 'truth':270,404,1338 'truth/drift':1401 'ts':585 'turn':800 'typescript':254 'unclear':930,1466 'unifi':1017 'unknown':1422 'unsupport':897 'updat':84,157,402,804,857,1145,1150 'upgrad':1274 'upstream':177 'use':13,89,262,284,545,618,733,739,767,790,828,917,946,1038,1073,1215,1381,1428,1439,1499,1542,1564 'user':31,100,520,654 'valid':21,63,137,224,704,860,1293 'verifi':1250 'via':604,1275 'want':523 'within':86 'without':651,811,884 'work':1035 'workflow':48,182,391,971,986,1214 'write':62,656 'yes':531","prices":[{"id":"82ecac6e-62ea-446a-8482-915d1d32cb3d","listingId":"97f15f83-a0e1-4e2e-a5f2-32663362c6dc","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sruja-ai","category":"sruja","install_from":"skills.sh"},"createdAt":"2026-04-18T23:06:45.664Z"}],"sources":[{"listingId":"97f15f83-a0e1-4e2e-a5f2-32663362c6dc","source":"github","sourceId":"sruja-ai/sruja/sruja-architecture","sourceUrl":"https://github.com/sruja-ai/sruja/tree/main/skills/sruja-architecture","isPrimary":false,"firstSeenAt":"2026-04-18T23:06:45.664Z","lastSeenAt":"2026-05-18T19:06:09.943Z"}],"details":{"listingId":"97f15f83-a0e1-4e2e-a5f2-32663362c6dc","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sruja-ai","slug":"sruja-architecture","github":{"repo":"sruja-ai/sruja","stars":17,"topics":["adr","agent-skills","ai","ai-driven-development","architecture","architecture-as-code","architecture-governance","developer-tools","governance","rust-lang","software-architecture","system-design","wasm"],"license":"apache-2.0","html_url":"https://github.com/sruja-ai/sruja","pushed_at":"2026-05-18T16:26:29Z","description":"Context Engineering and Architecture Intelligence for the AI Era. Machine-readable, continuously validated architecture as code for AI-assisted development.","skill_md_sha":"af3a9c32080ee67a46768aa9de858e4903f52052","skill_md_path":"skills/sruja-architecture/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sruja-ai/sruja/tree/main/skills/sruja-architecture"},"layout":"multi","source":"github","category":"sruja","frontmatter":{"name":"sruja-architecture","license":"Apache-2.0","description":"Discovers architecture from codebases and authors Sruja DSL (repo.sruja). Use when discovering architecture, generating or refactoring repo.sruja, validating architecture against code, maintaining architecture docs, or when the user mentions architecture-as-code, C4, or .sruja files."},"skills_sh_url":"https://skills.sh/sruja-ai/sruja/sruja-architecture"},"updatedAt":"2026-05-18T19:06:09.943Z"}}