{"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| 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,142 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-04-23T01:02:07.290Z","embedding":null,"createdAt":"2026-04-18T23:06:45.664Z","updatedAt":"2026-04-23T01:02:07.290Z","lastSeenAt":"2026-04-23T01:02:07.290Z","tsv":"'/../docs/federation_setup_guide.md':942 '/docs/payments.md':658 '/infra/payments':655 '/install.sh':1219 '/items?itemname=srujaai.sruja)':1266 '/k8s/payments':652 '/specs/payments.yaml':649 '/sruja-ai/sruja':1302 '/stdlib''':460 '1':75,286,371,728,950,1066,1313,1490 '2':104,107,295,406,742,965,1072,1320,1499 '3':122,173,309,434,762,975,1075,1347 '4':136,681,791,987,1366 '5':108,149,704,1000,1378 '6':162 'across':1010,1014,1060,1487 'add':516,859,873,1299 'adjac':606 'adr':1371 'ai':60 'alreadi':430 'alway':225 'ambigu':115,414 'analysi':242,1130 'answer':216 'api':467,640,929,1025 'api-servic':1024 'api.repo.bundle.json':986 'appli':821 'architectur':3,5,16,22,26,34,42,64,617,623,724,823,837,839,843,1054,1306,1310,1409,1480,1518 'architecture-as-cod':33 'architecture-awar':1309 'architecture.sruja':55,1319 'area':291,304 'area/module':299 'array':1005 'artifact':595,607,1085 'ask':98,106,407,427,496,1397,1435 'async':926 'asyncapi':663 'auth':308 'authent':918 'author':9,730 'avail':1548 'avoid':984 'awar':1311 'back':238,1245 'backend':473 'base':552,1452 'baselin':384,1115 'bash':393,685,707,1214,1220,1296 'behavior':1089 'big':294,1288 'bind':603 'bodi':601 'boundari':116,362,417 'build':994,1259 'bundl':978,1074,1377,1505 'c':259 'c4':37,129,442 'canon':758,807,998,1017,1360,1388 'cargo':1224 'chang':767,1289 'check':813,1003,1037 'check/generate':1343 'checklist':183 'circular':697 'clear':431 'cli':1191,1208,1239 'code':24,36,67,167,559,573,605,841,890,902 'code-adjac':604 'code/intent':766 'codebas':7,827,1250 'codegen/review':1312 'collect':372,976 'collis':985 'command':1187 'comment':912 'commit':387 'common':692 'complet':148,232,869 'complianc':1139 'compon':132,448,491,504,513,867,1120,1453 'compos':800,938,988,990,1076,1507 'config':675 'conflict':814,1002,1004 'consid':147,231 'contain':131,445,478,479,480,526,638 'context':130,324,336,347,402,443,744,1280,1338,1342,1394,1429,1534 'contract':1369 'copi':977 'core':199 'coverag':532 'crate':564 'crates/foo/src/lib.rs':893 'crates/sruja-cli':1227 'creat':866 'create/update':731 'cross':1042 'cross-repo':1041 'curl':1215 'cursor':1515 'custom':680 'data':120,423 'datastor':118,420 'deep':317,1141,1340 'default':289 'delta':779 'dep':698 'depend':178,181,250,306,320,366 'deploy':119,421 'depth':172 'describ':620 'descript':468,483,484,643 'design':1146 'design/refactor':1171 'detail':370,1512 'detect':359,932 'determinist':44 'diagnost':1268 'diagram':1272 'differ':723 'discov':4,15,335,401,746,822,1197,1213,1236,1428,1533 'discoveri':235,236,1091,1116,1119,1143,1152 'doc':27,517,533,540,556,583,614,657,670,671,885 'docker':667 'dockerfil':666 'docs/federation.md':818,1083,1185 'docs/federation_setup_guide.md':1079,1176,1510,1550 'docs/readme.md':547 'document':844 'downstream':180 'drift':154,160,709,712,763,770,1124,1201 'dsl':11,70,158,218,437,578,635,738,781 'duplic':1007 'e.g':83,305,514,545,561,892,1023 'e201':693 'e204':696 'e205':699 'e206':701 'element':522,579,600,618,887 'els':91,1526 'entir':1102 'entri':363 'error':145,229,691,1463 'etc':261 'evid':46,68,76,113,128,184,202,205,222,233,355,373,412,433,441,452,734,761,790,863,877,1322,1420,1434,1451 'evidence-bas':1450 'evidence-first':45,201 'exist':79,292,797,836,1354,1413 'expertis':71 'explicit':910 'export':322,1274 'extens':1260,1263 'extension/src/bar.ts':894 'extern':117,365,418,466,928,1442 'externalapi':464,489 'fabric':215 'fall':1244 'feder':1059,1486 'federation_setup_guide.md':941 'fi':40 'file':511,539,590,628,725,1373 'first':47,203,447,1346,1491 'fix':143,228,689,1461 'flow':121,424 'format':338,404,1385,1431,1536 'framework/domain/security':860 'fresh':1321 'fssl':1216 'full':310,319,1035,1145,1170 'gather':185,204,1433 'generat':17,50,123,190,219,342,435,550,736,828,954,1067,1445,1494 'git':386 'github.com':1301 'github.com/sruja-ai/sruja':1300 'go':256,642 'gql':677 'graph':243,264,996,1036 'graphql':676 'ground':624 'guess':198,209,274,851,1469 'guid':58,1063,1501 'handl':644 'helm':678 'help':1055,1231,1482,1492 'hour':88 'https':490 'id':759,808,810,812,999,1018,1020,1022,1361,1363,1365,1389 'impact':163,170,804,1030,1129,1205,1357,1543 'implement':919 'import':248,456 'includ':661,1210 'index':1351 'index.scip':1344 'inform':429,853,909 'infra':594 'initi':829 'insid':598 'instal':1190,1206,1225,1255,1282,1294 'instead':213,1473 'instruct':948 'integr':930 'intent':775,1367,1372 'invalid':694,702 'invent':788,1392 'java':258 'json':339,398,405,1386,1432,1537 'justifi':135,453 'k8s':665 'keep':622 'key':528 'kind':660,695,1008 'knowledg':492,551,1121 'kubernet':610,651,664 'label':1009 'lack':1240 'languag':253 'larg':277 'last':87 'level':446,449 'link':569 'lint':140,192,226,687,741,881,1199,1459 'list':196,321,854,1233,1470 'load':276,801,1028,1094,1098,1106,1113,1355 'local':729,811,1021,1314,1364 'locat':981 'main':415,422 'maintain':25,52,842 'manifest':611 'mark':1399 'markdown':505,535,544,566,581,586,896,899,1276 'marketplace.visualstudio.com':1265 'marketplace.visualstudio.com/items?itemname=srujaai.sruja)':1264 'may':568 'md':519 'mention':32 'messag':921 'minim':125,217,436,438,737,1447 'miss':326,389,852,906,1396 'missing/stale':1328 'mode':727 'model':207,1156 'modifi':1040 'modul':247,361,613 'multi':280,793,934,1048,1173,1182,1475,1540 'multi-repo':279,792,933,1047,1172,1181,1474,1539 'multipl':1061,1488 'must':541,1232 'narrat':861 'need':188,1111,1138 'new':826 'next':353 'npx':1297 'o':316,973,992 'one':510 'open':194,211,784,855,903,914,1471 'openapi':608,648,662 'oper':726,927 'opt':494 'opt-in':493 'option':151,164,706,773,1203,1261,1514 'order':1308 'orphan':700 'otherwis':1421 'output':747 'ownership':816,1038 'parti':471 'pass':193,1466 'path':385,560,719,891,1226 'pattern':1148 'payment':637,639,645 'paymentapi':1027 'per':503,512,952,1160 'per-compon':502 'per-repo':951 'per-task':1159 'person':461,462,463,485 'point':364,542 'prefer':271,374,757,1292,1387 'prerequisit':1188 'present':377,1523 'preview':1273 'principl':200 'process':646 'produc':124 'progress':275,1090 'prompt':1045,1165,1403 'propos':776 'proto':673 'protobuf':674 'protocol':487 'provid':356 'publish':936,966,971,1073,1504 'python':255 'qualiti':530 'question':105,110,186,195,212,409,735,785,856,904,915,1437,1472 'queue':922 'quick':73,175,1401 'r':95,155,171,315,332,337,351,396,403,710,771,972,1332,1384,1425,1430,1530,1535 'readm':672 'real':66,626 'reason':300 'recent':82,379,1416,1525 'ref':703,1370 'refactor':19,166,833,1147 'refer':534,572,580,588,901,1078,1151,1184,1509 'references/agents.md':1099,1149,1167 'references/knowledge_template.md':524,1122 'references/prompts.md':1118,1136,1166 'references/reference.md':1100,1126,1155 'refin':150,705,715,764,1154 'refresh':345,1278,1284,1336 'relat':1150 'relationship':874,1044,1455 'relev':753 'renam':982 'repair':684 'repo':281,346,794,809,935,953,963,969,1011,1015,1019,1043,1049,1062,1071,1174,1183,1223,1247,1258,1279,1315,1337,1362,1375,1405,1476,1489,1541 'repo.bundle.json':974 'repo.sruja':12,20,53,126,141,189,439,688,716,732,830,955,1068,1317,1448,1495 'repositori':357,958,1498 'requir':72,630,832,1132 'resolv':1001 'result':161,713 'retriev':1088,1307 'review':627 'rs':562 'rubi':260 'rule':1103,1157,1158,1516 'rules/query/compliance-check.md':1140 'rules/query/impact-analysis.md':1131 'rules/query/scip-discovery.md':1144 'rules/requirements/capture-requirements.md':1134 'rules/requirements/link-requirements.md':1135 'rules/sdlc/create-phase.md':1117 'rules/sdlc/update-phase.md':1125 'run':92,102,138,152,168,329,392,739,1270,1283,1329,1422,1457,1527 'rust':257 'scan':314,367 'schema':1086,1186 'scip':1345 'scope':368,525,1440 'script':1256 'sdlc':1127 'see':176,817,940,1082,1162,1549 'semant':1142,1341 'separ':575 'servic':419,474,1026 'set':555,884,1057,1484 'setup':939,1050,1175 'share':980 'singl':267,962,1404 'single-repo':961 'sitter':246,1326 'skill':43,57,1243,1291,1295,1298,1303,1410,1481 'skill-sruja-architecture' 'skip':880 'slice':297,752,805,1031,1348,1358,1544 'sourc':268,283,558,591,597,647,650,653,656,889 'source-sruja-ai' 'spec':592,609 'specif':303 'specifi':721 'sruja':2,10,39,41,93,139,153,169,191,313,330,334,344,349,394,400,455,538,577,636,686,708,740,769,774,799,913,970,989,1053,1194,1196,1198,1200,1204,1230,1262,1269,1277,1305,1330,1335,1382,1408,1423,1427,1458,1479,1528,1532 'sruja-architectur':1,1052,1304,1407,1478 'sruja.ai':459,1218 'sruja.ai/install.sh':1217 'sruja.ai/stdlib''':458 'sruja/context.json':78,287,375,749,1293,1323,1380,1412,1521 'sruja/graph.json':296,311 'sruja/knowledge':507,518 'sruja/knowledge/component.md':546 'sruja/knowledge/paymentservice.md':515 'stale':328,391 'start':74,1402 'static':241 'status':383,1383 'step':945,947,1081,1178,1180,1513 'step-by-step':944,1177 'structur':358,1248 'suggest':343,1334 'summari':288 'support':223,252,659 'surfac':210,905 'sync':94,331,350,395,1195,1211,1234,1331,1424,1529 'syntax':1267 'system':416,465,475,476,477,529,743,1350 'system.container':486,488 'system.index.json':796,993,1033,1077,1353,1508,1546 'tabl':1163 'target':109,408,1436 'task':318,756,1110,1112,1161,1519 'technolog':360,481,482,641 'terraform':612,654,668 'tf':669 'third':470 'third-parti':469 'tier':282 'time':354 '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' 'traceabl':1133 'tree':245,1325 'tree-sitt':244,1324 'truth':270,382,1316 'truth/drift':1379 'ts':563 'turn':778 'typescript':254 'unclear':908,1444 'unifi':995 'unknown':1400 'unsupport':875 'updat':84,157,380,782,835,1123,1128 'upgrad':1252 'upstream':177 'use':13,89,262,284,523,596,711,717,745,768,806,895,924,1016,1051,1193,1359,1406,1417,1477,1520,1542 'user':31,100,498,632 'valid':21,63,137,224,682,838,1271 'verifi':1228 'via':582,1253 'want':501 'within':86 'without':629,789,862 'work':1013 'workflow':48,182,369,949,964,1192 'write':62,634 'yes':509","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-04-23T01:02:07.290Z"}],"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-04-20T06:30:12Z","description":"Context Engineering and Architecture Intelligence for the AI Era. Machine-readable, continuously validated architecture as code for AI-assisted development.","skill_md_sha":"9a766d052009408aa4654f3f3bf4d57a143e8e75","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-04-23T01:02:07.290Z"}}