{"_id":"@doikayt/autogen-markdown-doc","_rev":"7-25c51db123cf940a611fcadc9c301162","name":"@doikayt/autogen-markdown-doc","dist-tags":{"latest":"1.4.20"},"versions":{"1.4.15":{"name":"@doikayt/autogen-markdown-doc","version":"1.4.15","license":"MIT","_id":"@doikayt/autogen-markdown-doc@1.4.15","maintainers":[{"name":"datalackey","email":"chris@buildlackey.com"}],"homepage":"https://github.com/doikayt/build-tools/tree/main/javascript/autogen-markdown-doc","bugs":{"url":"https://github.com/doikayt/build-tools/issues"},"bin":{"autogen-markdown-doc":"bin/autogen-markdown-doc.js"},"dist":{"shasum":"62741c5aab74b6abc8d4abc51311be32ce8e7fef","tarball":"https://registry.npmjs.org/@doikayt/autogen-markdown-doc/-/autogen-markdown-doc-1.4.15.tgz","fileCount":3,"integrity":"sha512-Kx2MuzQa2aFtkd6kLKhldAAwzxAVCDhUCMk+cH6hXEsEgi3p11HKwszKyc8DnG8eg2RI0fuXAwRxHUJ0JptTxA==","signatures":[{"sig":"MEYCIQCvv6wIiAyWlq/0Xw3MMgpHM/9+ynTBZUrn00FUDBnY6wIhAL8FwGP5gsBtq4sURwG8ypjcNDgdvPMVE07yMGKjdUnC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19866},"type":"module","engines":{"node":">=22"},"gitHead":"2a67c16f87dbf3f5dc6f10fd9e7de0da0745e242","scripts":{"test":"npx vitest run --config vitest.e2e.config.ts"},"_npmUser":{"name":"datalackey","email":"chris@buildlackey.com"},"repository":{"url":"git+https://github.com/doikayt/build-tools.git","type":"git","directory":"javascript/autogen-markdown-doc"},"_npmVersion":"10.9.8","description":"Combined documentation automation: update-markdown-toc + nx-graph-to-mermaid","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@doikayt/tooling-core":"1.4.15","@doikayt/nx-graph-to-mermaid":"1.4.15","@doikayt/update-markdown-toc":"1.4.15","@doikayt/update-markdown-uml":"1.4.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^18.16.0"},"_npmOperationalInternal":{"tmp":"tmp/autogen-markdown-doc_1.4.15_1783992547080_0.4723793946074968","host":"s3://npm-registry-packages-npm-production"}},"1.4.16":{"name":"@doikayt/autogen-markdown-doc","version":"1.4.16","license":"MIT","_id":"@doikayt/autogen-markdown-doc@1.4.16","maintainers":[{"name":"datalackey","email":"chris@buildlackey.com"}],"homepage":"https://github.com/doikayt/build-tools/tree/main/javascript/autogen-markdown-doc","bugs":{"url":"https://github.com/doikayt/build-tools/issues"},"bin":{"autogen-markdown-doc":"bin/autogen-markdown-doc.js"},"dist":{"shasum":"dc2f719f55bd622aa2f0e11f53bc2eb71286653d","tarball":"https://registry.npmjs.org/@doikayt/autogen-markdown-doc/-/autogen-markdown-doc-1.4.16.tgz","fileCount":3,"integrity":"sha512-Tl/uaKrjjZjGYM27X1MYw+vKIWzbsFZemRTI2tRX1IXVVejO6lm3cPzg3v0nBOFsECDZNHK/yT8akhG0nQF/1w==","signatures":[{"sig":"MEQCIFIesbLvHA+spkB3iFRY/p5k451Dm6dNcs+OMnaTQRN3AiBQW1d7vie6tne05cEBjUVAmz9GI2dGgAr7VOC1oi8SCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19866},"type":"module","engines":{"node":">=22"},"gitHead":"d1cdb9d8727e1aecffdc4916e6766d9b50765e64","scripts":{"test":"npx vitest run --config vitest.e2e.config.ts"},"_npmUser":{"name":"datalackey","email":"chris@buildlackey.com"},"repository":{"url":"git+https://github.com/doikayt/build-tools.git","type":"git","directory":"javascript/autogen-markdown-doc"},"_npmVersion":"10.9.8","description":"Combined documentation automation: update-markdown-toc + nx-graph-to-mermaid","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@doikayt/tooling-core":"1.4.16","@doikayt/nx-graph-to-mermaid":"1.4.16","@doikayt/update-markdown-toc":"1.4.16","@doikayt/update-markdown-uml":"1.4.16"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^18.16.0"},"_npmOperationalInternal":{"tmp":"tmp/autogen-markdown-doc_1.4.16_1783993661450_0.020180243179367174","host":"s3://npm-registry-packages-npm-production"}},"1.4.17":{"name":"@doikayt/autogen-markdown-doc","version":"1.4.17","license":"MIT","_id":"@doikayt/autogen-markdown-doc@1.4.17","maintainers":[{"name":"datalackey","email":"chris@buildlackey.com"}],"homepage":"https://github.com/doikayt/build-tools/tree/main/javascript/autogen-markdown-doc","bugs":{"url":"https://github.com/doikayt/build-tools/issues"},"bin":{"autogen-markdown-doc":"bin/autogen-markdown-doc.js"},"dist":{"shasum":"534e41092b0183e84d0c5fb501831835704e8c12","tarball":"https://registry.npmjs.org/@doikayt/autogen-markdown-doc/-/autogen-markdown-doc-1.4.17.tgz","fileCount":3,"integrity":"sha512-xrXrglRFS2+XDkwf7cC8jKBoKuxWFJj8v2RZp+6aBIBfTn7vQkgAK2oR+JmF0kdykzfo/Q4G/bpcxQVn/OmI3g==","signatures":[{"sig":"MEUCICGsuK8ypwT6vj13O2KZBcNajrDmobjY8Pj5XG1mLYKiAiEA3kdA9bd+/0ynyQZUA2ZX16pc+4DpBDl3GBsJqwnpMkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19866},"type":"module","engines":{"node":">=22"},"gitHead":"776931f4dfd9bbbc5a3e59c185ad157c2bba7b24","scripts":{"test":"npx vitest run --config vitest.e2e.config.ts"},"_npmUser":{"name":"datalackey","email":"chris@buildlackey.com"},"repository":{"url":"git+https://github.com/doikayt/build-tools.git","type":"git","directory":"javascript/autogen-markdown-doc"},"_npmVersion":"10.9.8","description":"Combined documentation automation: update-markdown-toc + nx-graph-to-mermaid","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@doikayt/tooling-core":"1.4.17","@doikayt/nx-graph-to-mermaid":"1.4.17","@doikayt/update-markdown-toc":"1.4.17","@doikayt/update-markdown-uml":"1.4.17"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^18.16.0"},"_npmOperationalInternal":{"tmp":"tmp/autogen-markdown-doc_1.4.17_1783994507138_0.3823482108493381","host":"s3://npm-registry-packages-npm-production"}},"1.4.18":{"name":"@doikayt/autogen-markdown-doc","version":"1.4.18","license":"MIT","_id":"@doikayt/autogen-markdown-doc@1.4.18","maintainers":[{"name":"datalackey","email":"chris@buildlackey.com"},{"name":"lastliet","email":"pranjalk.dev@outlook.com"}],"homepage":"https://github.com/doikayt/build-tools/tree/main/javascript/autogen-markdown-doc","bugs":{"url":"https://github.com/doikayt/build-tools/issues"},"bin":{"autogen-markdown-doc":"bin/autogen-markdown-doc.js"},"dist":{"shasum":"08ba2cacfcaa79366e3312cce0905dd9bafdb624","tarball":"https://registry.npmjs.org/@doikayt/autogen-markdown-doc/-/autogen-markdown-doc-1.4.18.tgz","fileCount":3,"integrity":"sha512-OnVuKUtU5J9iRpLOUxF22BUSXhl4wRVZzrKzuSu9Wi1vwK73P9qqRXjYbhO1sofKlDQaBusdeBJTga9pcrWaEQ==","signatures":[{"sig":"MEQCIFZbN8hrzrASEA6h6F64E16gEuxSCY39DZzxaUKCddP6AiAQo+nJG3VlnS5PR+VQR3cMBpaIBgBL/ETCfa41uqeY8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDhrA0FJFyUyQbp9uZvjgf1/fj0qc7TQptA1nFZ/xZNHAIgPQyb6EoDuYuFmCvif9Q6uw3KqvZSmCYwPj9ytXa5bco=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19979},"type":"module","engines":{"node":">=22"},"gitHead":"2974899886f97c0ea44079338ff50f59a7c28718","scripts":{"test":"npx vitest run --config vitest.e2e.config.ts"},"_npmUser":{"name":"datalackey","email":"chris@buildlackey.com"},"repository":{"url":"git+https://github.com/doikayt/build-tools.git","type":"git","directory":"javascript/autogen-markdown-doc"},"_npmVersion":"10.9.8","description":"Combined documentation automation: update-markdown-toc + nx-graph-to-mermaid","directories":{},"_nodeVersion":"22.23.2","dependencies":{"@doikayt/tooling-core":"1.4.18","@doikayt/nx-graph-to-mermaid":"1.4.18","@doikayt/update-markdown-toc":"1.4.18","@doikayt/update-markdown-uml":"1.4.18"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^18.16.0"},"_npmOperationalInternal":{"tmp":"tmp/autogen-markdown-doc_1.4.18_1790823626300_0.7031042765036266","host":"s3://npm-registry-packages-npm-production"}},"1.4.19":{"name":"@doikayt/autogen-markdown-doc","version":"1.4.19","license":"MIT","_id":"@doikayt/autogen-markdown-doc@1.4.19","maintainers":[{"name":"datalackey","email":"chris@buildlackey.com"},{"name":"lastliet","email":"pranjalk.dev@outlook.com"}],"homepage":"https://github.com/doikayt/build-tools/tree/main/javascript/autogen-markdown-doc","bugs":{"url":"https://github.com/doikayt/build-tools/issues"},"bin":{"autogen-markdown-doc":"bin/autogen-markdown-doc.js"},"dist":{"shasum":"e11fd06f9270874aaa2744393330ea50ef119690","tarball":"https://registry.npmjs.org/@doikayt/autogen-markdown-doc/-/autogen-markdown-doc-1.4.19.tgz","fileCount":3,"integrity":"sha512-p5rLxYJanI7ca4xw15IJkByXAcmhP9jlhXq5vYabKC8cnQJ1bterqJGD34vLOqxQTBmQvkv/g2A7wnxnV3vbqg==","signatures":[{"sig":"MEQCIDBHG9Obix4u0/UFNOLLGMo42EaRMeafaQc234Ly1ETQAiAPMbR+BXEKYMTjkn4Ai9PzBY7BqJxycWema/Lq1bAE/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDmIQ4bemp5PzFcyZGwW5xVIBwUZPArM7v/hw/k5v2B4AIhAMQOz89VWOt8KjonL8ttLTD0P+1oi0QTq+qH5FMPoJon","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19979},"type":"module","engines":{"node":">=22"},"gitHead":"cbd192dc2455809281db2b19a5527a6260f33594","scripts":{"test":"npx vitest run --config vitest.e2e.config.ts"},"_npmUser":{"name":"datalackey","email":"chris@buildlackey.com"},"repository":{"url":"git+https://github.com/doikayt/build-tools.git","type":"git","directory":"javascript/autogen-markdown-doc"},"_npmVersion":"10.9.9","description":"Combined documentation automation: update-markdown-toc + nx-graph-to-mermaid","directories":{},"_nodeVersion":"22.23.3","dependencies":{"@doikayt/tooling-core":"1.4.19","@doikayt/nx-graph-to-mermaid":"1.4.19","@doikayt/update-markdown-toc":"1.4.19","@doikayt/update-markdown-uml":"1.4.19"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^18.16.0"},"_npmOperationalInternal":{"tmp":"tmp/autogen-markdown-doc_1.4.19_1790823991659_0.7384065058619393","host":"s3://npm-registry-packages-npm-production"}},"1.4.20":{"_id":"@doikayt/autogen-markdown-doc@1.4.20","bin":{"autogen-markdown-doc":"bin/autogen-markdown-doc.js"},"bugs":{"url":"https://github.com/doikayt/build-tools/issues"},"dist":{"shasum":"7bad12bb87ff71f6658ec41a00cc4ab1caab4627","tarball":"https://registry.npmjs.org/@doikayt/autogen-markdown-doc/-/autogen-markdown-doc-1.4.20.tgz","fileCount":3,"integrity":"sha512-q8qId/2XUbkTlWm1G6TRq/W4wRYwKJ7mL5baMrxKSIxUJjf58fc461w1a7Z9Xl5Uba3rxZoyspKtzFhcYUDifA==","signatures":[{"sig":"MEQCIAfBPkdnR6eTP2TValHJR8b4CRlBWxtffY+4kvvtXawaAiArdZd1BZ/YrWab2InerOXfBzOkR1JRJ9Bvyqf/nhQiRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCnGe0pTsBILCKaHYqWO3DrZ+sMMuAlzCTjUIkF4Y/aoAIgPjranrVb+oM8oR48aDz6ldW42c9L5Uf90B3B4brWYl0="}],"unpackedSize":19979},"name":"@doikayt/autogen-markdown-doc","type":"module","engines":{"node":">=22"},"gitHead":"711d730053d3e887dc94a1850139fffba699d816","license":"MIT","scripts":{"test":"npx vitest run --config vitest.e2e.config.ts"},"version":"1.4.20","_npmUser":{"name":"datalackey","email":"chris@buildlackey.com"},"homepage":"https://github.com/doikayt/build-tools/tree/main/javascript/autogen-markdown-doc","repository":{"url":"git+https://github.com/doikayt/build-tools.git","type":"git","directory":"javascript/autogen-markdown-doc"},"_npmVersion":"10.9.9","description":"Combined documentation automation: update-markdown-toc + nx-graph-to-mermaid","directories":{},"maintainers":[{"name":"datalackey","email":"chris@buildlackey.com"},{"name":"lastliet","email":"pranjalk.dev@outlook.com"}],"_nodeVersion":"22.23.3","dependencies":{"@doikayt/tooling-core":"1.4.20","@doikayt/nx-graph-to-mermaid":"1.4.20","@doikayt/update-markdown-toc":"1.4.20","@doikayt/update-markdown-uml":"1.4.20"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^18.16.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/autogen-markdown-doc_1.4.20_1790824800420_0.9125720347664492"}}},"time":{"created":"2026-07-14T01:29:06.891Z","modified":"2026-10-01T03:20:00.690Z","1.4.15":"2026-07-14T01:29:07.213Z","1.4.16":"2026-07-14T01:47:41.580Z","1.4.17":"2026-07-14T02:01:47.269Z","1.4.18":"2026-10-01T03:00:26.386Z","1.4.19":"2026-10-01T03:06:31.751Z","1.4.20":"2026-10-01T03:20:00.524Z"},"bugs":{"url":"https://github.com/doikayt/build-tools/issues"},"license":"MIT","homepage":"https://github.com/doikayt/build-tools/tree/main/javascript/autogen-markdown-doc","repository":{"url":"git+https://github.com/doikayt/build-tools.git","type":"git","directory":"javascript/autogen-markdown-doc"},"description":"Combined documentation automation: update-markdown-toc + nx-graph-to-mermaid","maintainers":[{"name":"datalackey","email":"chris@buildlackey.com"},{"name":"lastliet","email":"pranjalk.dev@outlook.com"}],"readme":"<!-- TOC:START -->\n- [@doikayt/autogen-markdown-doc](#doikaytautogen-markdown-doc)\n  - [Bundled Plugins](#bundled-plugins)\n  - [Installation](#installation)\n  - [Usage](#usage)\n    - [Update Mode (default)](#update-mode-default)\n    - [Check Mode (CI Drift Detection)](#check-mode-ci-drift-detection)\n  - [Tag Families](#tag-families)\n  - [File Co-location Constraint](#file-co-location-constraint)\n  - [Options](#options)\n  - [Using Bundled Plugins Independently](#using-bundled-plugins-independently)\n  - [Determinism Guarantees](#determinism-guarantees)\n  - [Example](#example)\n    - [Source tree](#source-tree)\n    - [Generated output](#generated-output)\n  - [Built With](#built-with)\n  - [Packaging, Publishing, and Inter-relationship with Other Plugins](#packaging-publishing-and-inter-relationship-with-other-plugins)\n  - [Contributing](#contributing)\n  - [License](#license)\n<!-- TOC:END -->\n\n# @doikayt/autogen-markdown-doc\n\nThis plugin keeps documentation in sync with code. It is an \nuber-plugin that serves as a minimal-config orchestrator of the [plugins](#bundled-plugins) that it bundles.\nUse this plugin directly for simple projects with a single Markdown file — typically README.md.  \nThe Markdown file may contain any combination of auto-generated Table of Contents, UML component diagrams, and \nNX build task-graph diagrams (where each auto-generated block has corresponding [injection markers](#tag-families).) \n\nPlace the relevant injection markers where you want them in your Markdown file, then run the tool. \nUML and NX graph plugins activate only when their markers are present;\nTOC is always invoked when any markers are found at all.\nSections without recognized markers are left untouched.\n\nFor CI, check mode detects drift: any generated section that has fallen out of sync \nwith its source causes a non-zero exit, making it straightforward to gate a \nPR pipeline that requires documentation correctness.\n\nWhen your project outgrows these defaults and needs features such as recursive traversal through \nyour repo, custom source paths, or per-plugin flags — invoke the bundled plugins directly.\n\n\n---\n\n## Bundled Plugins\n\nThis package orchestrates three focused plugins:\n\n- [`@doikayt/update-markdown-toc`](../update-markdown-toc/README.md) — generates Tables of Contents\n- [`@doikayt/update-markdown-uml`](../update-markdown-uml/README.md) — generates UML component diagrams from TypeScript source\n- [`@doikayt/nx-graph-to-mermaid`](../nx-graph-to-mermaid/README.md) — generates Mermaid task-graph diagrams from `project.json`\n\nEach plugin is activated only when its tag family is present in the target file:\n\n| Plugin | Activates when… |\n|---|---|\n| `update-markdown-toc` | Always (when any markers are found at all) |\n| `nx-graph-to-mermaid` | `NX_GRAPH:START` / `NX_GRAPH:END` markers present **and** `project.json` exists in the same directory |\n| `update-markdown-uml` | Any of the three `UML:*` marker pairs are present |\n\nIf the target file contains none of the three tag families, the tool warns and exits cleanly.\n\n---\n\n## Installation\n\n```bash\nnpm i -D @doikayt/autogen-markdown-doc\n```\n\n---\n\n## Usage\n\n### Update Mode (default)\n\nApplies all tag transformations in-place:\n\n```bash\n# Target README.md in the current directory (default)\nnpx autogen-markdown-doc\n\n# Explicit subcommand\nnpx autogen-markdown-doc update\n\n# Specify a different file\nnpx autogen-markdown-doc update docs/OVERVIEW.md\n\n# Skip specific UML source packages\nnpx autogen-markdown-doc update --exclude-components legacy,deprecated\n```\n\n---\n\n### Check Mode (CI Drift Detection)\n\nValidates tags without writing any files. All active plugins run regardless of\nindividual failures, so a single check reveals all drift at once:\n\n```bash\n# Check README.md in current directory\nnpx autogen-markdown-doc check\n\n# Check a specific file\nnpx autogen-markdown-doc check docs/OVERVIEW.md\n```\n\n---\n\n## Tag Families\n\n| Plugin | Marker pair(s) |\n|---|---|\n| `update-markdown-toc` | `<!-- TOC:START -->` … `<!-- TOC:END -->` |\n| `update-markdown-uml` | `<!-- UML:components:START -->` … `<!-- UML:components:END -->`<br>`<!-- UML:components-table:START -->` … `<!-- UML:components-table:END -->`<br>`<!-- UML:component-details:START -->` … `<!-- UML:component-details:END -->` |\n| `nx-graph-to-mermaid` | `<!-- NX_GRAPH:START -->` … `<!-- NX_GRAPH:END -->` |\n\n---\n\n## File Co-location Constraint\n\nThe target Markdown file must reside in the same directory as any required plugin inputs:\n\n| Plugin | Required co-resident |\n|---|---|\n| `nx-graph-to-mermaid` | `project.json` |\n| `update-markdown-uml` | `src/` directory |\n\nIf your layout differs — recursive traversal, custom source paths, or per-plugin flags — invoke\nthe underlying packages directly (see [Using Bundled Plugins Independently](#using-bundled-plugins-independently)).\n\n---\n\n## Options\n\n| Option | Description |\n|---|---|\n| `--exclude-components <pkg1,pkg2>` | Forwarded to UML generation only; leaf directory names under `src/` to skip |\n| `-q`, `--quiet` | Suppress all non-error output, including the \"no markers\" warning |\n| `-d`, `--debug` | Print debug diagnostics to stderr |\n| `-h`, `--help` | Show this help message and exit (exit 0) |\n\n---\n\n## Using Bundled Plugins Independently\n\n_When your project outgrows the defaults — recursive traversal, custom source paths,\nper-plugin flags — invoke the underlying packages directly:_\n\n```bash\n# TOC only — single file\nnpx update-markdown-toc README.md\n\n# TOC — recursive (all .md files under a folder)\nnpx update-markdown-toc --recursive docs/\n\n# UML diagrams only\nnpx update-markdown-uml README.md\n\n# UML with exclusions\nnpx update-markdown-uml --exclude-components legacy,deprecated README.md\n\n# CI drift check — single plugin\nnpx update-markdown-toc --check README.md\nnpx update-markdown-uml --check README.md\n\n# CI drift check — uber-bundle\nnpx autogen-markdown-doc check\n```\n\n> **Note:** `nx-graph-to-mermaid` is an NX executor and has no standalone CLI.\n> To invoke it independently, configure a target in your `project.json` using the\n> `@doikayt/nx-graph-to-mermaid:run` executor. See the\n> [nx-graph-to-mermaid README](../nx-graph-to-mermaid/README.md) for details.\n\n---\n\n## Determinism Guarantees\n\n- Running `update` twice produces no changes on the second run.\n- `check` passes immediately after `update`.\n\nConceptually:\n\n```\ncheck(update(file)) === TRUE     # check should always pass after one update cycle\n```\n\nPro Tip: Plugins run in order **NX → UML → TOC**. UML runs before TOC so that\ncomponent headings it injects (e.g. `#### cli`, `#### math-engine`) are already\npresent by the time TOC scans the file — convergence happens in a single `update`\npass. NX runs first because its output does not inject headings that TOC picks up,\nso its position relative to UML does not affect convergence.\n(Don't worry if this doesn't make sense yet!)\n\n---\n\n## Example\n\n[This folder](./tests/e2e/fixtures/math-cli-nx) contains a sample project that\ndemonstrates the tool's output with all three content-generation features active.\n\nThe sample project is a simple two-component TypeScript app: a `cli` layer that\ndelegates computation to a `math-engine` layer. It also ships a `project.json`\ndeclaring a six-target NX build pipeline with parallelism and branching.\n\nRunning the sample is a good way to see the full output. Copy/paste the code\nbelow to clone it, install the published plugin, and run it.\n\nTo view the rendered mermaid diagrams, use VSCode's built-in Markdown preview, or\npush to GitHub and view in the browser.\n\n```bash\nrm -rf /tmp/run-autogen-sample\nmkdir /tmp/run-autogen-sample\ncp -r javascript/autogen-markdown-doc/tests/e2e/fixtures/math-cli-nx/* /tmp/run-autogen-sample/\ncd /tmp/run-autogen-sample/\nnpm install\nnpx autogen-markdown-doc\necho Load the README file into your favorite Markdown viewer. Enjoy the injected content.\n```\n\n### Source tree\n\nA two-component project with a six-target build pipeline:\n\n```\nsrc/\n  cli/\n    AddCommand.ts\n    ArgParser.ts\n    CliCommand.ts\n    CliRunner.ts\n    CommandRegistry.ts\n    ParsedArgs.ts\n    SubtractCommand.ts\n  math-engine/\n    MathEngine.ts\n    MathError.ts\n    MathResult.ts\n    Operation.ts\nproject.json          ← NX build pipeline (install → build/lint → type-check/test → e2e)\nREADME.md             ← target file with all three tag families\n```\n\n`cli` imports from `math-engine`. `math-engine` has no dependency on `cli`.\n\n### Generated output\n\n**Table of contents** — injected between `TOC:START` / `TOC:END` markers:\n\n```\n- [Math CLI](#math-cli)\n  - [Build Pipeline](#build-pipeline)\n  - [Component Diagram](#component-diagram)\n  - [Components Table](#components-table)\n  - [Component Details](#component-details)\n  - [Usage](#usage)\n```\n\n**NX task-graph** — injected between `NX_GRAPH:START` / `NX_GRAPH:END` markers.\nThe `project.json` declares six targets with `install → build/lint → type-check/test → e2e`\ndependencies, producing a branching pipeline diagram:\n\n```mermaid\ngraph TD\n  install[\"install\"]\n  build[\"build\"]\n  lint[\"lint\"]\n  type-check[\"type-check\"]\n  test[\"test\"]\n  e2e[\"e2e\"]\n\n  build --> install\n  lint --> install\n  type-check --> build\n  test --> build\n  e2e --> test\n  e2e --> lint\n```\n\n**Component overview** — injected between `UML:components:START` / `UML:components:END` markers.\nOne subgraph per component; arrows show import direction:\n\n```mermaid\nflowchart TB\n  subgraph cli[\"cli\"]\n  end\n  subgraph math-engine[\"math-engine\"]\n  end\n\n  cli --> math-engine\n```\n\n**Components table** — injected between `UML:components-table:START` / `UML:components-table:END`\nmarkers. Descriptions are read from `_COMPONENT_INFO.md` files in each component directory:\n\n| Component | Description |\n|-----------|-------------|\n| cli | Command-line interface layer that parses arguments and dispatches math operations to the math-engine component |\n| math-engine | Code for System Backend -- which enables CLI front-end access to a suite of sophisticated math functions |\n\n**Class diagrams** — one per component, injected between `UML:component-details:START` /\n`UML:component-details:END` markers. See\n[update-markdown-uml README](../update-markdown-uml/README.md#generated-output) for the\nfull class-diagram output.\n\n---\n\n## Built With\n\nFor the full workspace tech stack see: [TECH-STACK.md](../TECH-STACK.md)\n\n---\n\n## Packaging, Publishing, and Inter-relationship with Other Plugins\n\nThis package is one component of a small ecosystem of JavaScript tooling plugins maintained\nas individual npm packages in this repository.\nThe versioning and release of these packages is governed by a coordinated release policy, and\nthe packages adhere to common design and architectural principles described [here](../README.md).\n\n---\n\n## Contributing \n\nFor development setup, build workflow, and release procedures (including how to\ntrigger a publish via Changesets), see [CONTRIBUTING.md](../docs/CONTRIBUTING.md).\n\n---\n\n## License\n\nMIT\n\n[![Free Palestine!](https://badge.techforpalestine.org/ceasefire-now)](https://techforpalestine.org/learn-more)\n","readmeFilename":"README.md"}