kitfly 0.2.0 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +25 -10
  3. package/VERSION +1 -1
  4. package/dist/_raw/content/guide/branding.md +146 -0
  5. package/dist/_raw/content/guide/data-driven-content.md +204 -0
  6. package/dist/_raw/content/reference/configuration.md +145 -7
  7. package/dist/_raw/content/reference/environment-variables.md +26 -1
  8. package/dist/_raw/content/reference/glossary.md +25 -1
  9. package/dist/_raw/content/reference/key-concepts.md +30 -2
  10. package/dist/_raw/content/reference/plugins.md +14 -0
  11. package/dist/_raw/content/reference/slides-authoring-guidelines.md +129 -0
  12. package/dist/_raw/content/reference.md +1 -0
  13. package/dist/_raw/docs/decisions/ADR-0006-data-driven-content.md +350 -0
  14. package/dist/content/deployment/preflight.html +10 -6
  15. package/dist/content/deployment/recipes/aws-s3.html +10 -6
  16. package/dist/content/deployment/recipes/cloudflare-pages.html +10 -6
  17. package/dist/content/deployment/recipes/cloudflare-r2.html +10 -6
  18. package/dist/content/deployment/recipes/fly-io.html +10 -6
  19. package/dist/content/deployment/recipes/github-pages.html +10 -6
  20. package/dist/content/deployment/recipes/netlify.html +10 -6
  21. package/dist/content/deployment/recipes/vercel.html +10 -6
  22. package/dist/content/deployment/secrets-and-env-vars.html +10 -6
  23. package/dist/content/deployment.html +10 -6
  24. package/dist/content/guide/approaches.html +10 -6
  25. package/dist/content/guide/branding.html +510 -0
  26. package/dist/content/guide/data-driven-content.html +543 -0
  27. package/dist/content/guide/features.html +10 -6
  28. package/dist/content/guide/getting-started.html +10 -6
  29. package/dist/content/guide/kitfly-overview.html +10 -6
  30. package/dist/content/reference/configuration.html +135 -9
  31. package/dist/content/reference/design-catalog.html +10 -6
  32. package/dist/content/reference/environment-variables.html +50 -8
  33. package/dist/content/reference/glossary.html +24 -8
  34. package/dist/content/reference/key-concepts.html +33 -9
  35. package/dist/content/reference/plugins.html +22 -7
  36. package/dist/content/reference/slides-authoring-guidelines.html +422 -0
  37. package/dist/content/reference/structure.html +10 -6
  38. package/dist/content/reference.html +11 -6
  39. package/dist/content/templates/crucible.html +10 -6
  40. package/dist/content/templates/handbook.html +10 -6
  41. package/dist/content/templates/minimal.html +10 -6
  42. package/dist/content/templates/overview.html +10 -6
  43. package/dist/content/templates/pipeline.html +10 -6
  44. package/dist/content/templates/productbook.html +10 -6
  45. package/dist/content/templates/runbook.html +10 -6
  46. package/dist/content/templates/servicebook.html +10 -6
  47. package/dist/content-index.json +38 -2
  48. package/dist/docs/decisions/ADR-0001-minimalist-site-code.html +10 -6
  49. package/dist/docs/decisions/ADR-0002-ai-accessibility.html +10 -6
  50. package/dist/docs/decisions/ADR-0003-single-file-bundle.html +10 -6
  51. package/dist/docs/decisions/ADR-0004-bun-runtime.html +10 -6
  52. package/dist/docs/decisions/ADR-0005-plugin-contract-and-distribution.html +10 -6
  53. package/dist/docs/decisions/ADR-0006-data-driven-content.html +752 -0
  54. package/dist/docs/decisions/DDR-0001-viewport-locked-layout.html +10 -6
  55. package/dist/docs/decisions/DDR-0002-theme-system.html +10 -6
  56. package/dist/docs/decisions/DDR-0003-bounded-logo-slot.html +10 -6
  57. package/dist/docs/decisions/DDR-0004-slides-rendering-model.html +10 -6
  58. package/dist/docs/decisions/DDR-0005-deterministic-layout-boundary.html +10 -6
  59. package/dist/docs/userguide/cli/build.html +10 -6
  60. package/dist/docs/userguide/cli/bundle.html +10 -6
  61. package/dist/docs/userguide/cli/dev.html +10 -6
  62. package/dist/docs/userguide/cli/init.html +10 -6
  63. package/dist/docs/userguide/cli/servers.html +10 -6
  64. package/dist/docs/userguide/cli/stop.html +10 -6
  65. package/dist/docs/userguide/cli/update.html +10 -6
  66. package/dist/docs/userguide/cli/version.html +10 -6
  67. package/dist/docs/userguide/cli.html +10 -6
  68. package/dist/docs/userguide/sharing.html +10 -6
  69. package/dist/index.html +10 -6
  70. package/dist/llms.txt +3 -3
  71. package/dist/provenance.json +4 -4
  72. package/dist/schemas/plugin-registry.schema.html +10 -6
  73. package/dist/schemas/plugin-schemas-notes.html +10 -6
  74. package/dist/schemas/plugin.schema.html +10 -6
  75. package/dist/schemas/plugins.schema.html +10 -6
  76. package/dist/schemas/v0/common.schema.html +14 -10
  77. package/dist/schemas/v0/plugin-registry.schema.html +13 -9
  78. package/dist/schemas/v0/plugin.schema.html +13 -9
  79. package/dist/schemas/v0/plugins.schema.html +13 -9
  80. package/dist/schemas/v0/site.schema.html +67 -7
  81. package/dist/schemas/v0/theme.schema.html +21 -17
  82. package/dist/schemas.html +10 -6
  83. package/dist/styles.css +39 -4
  84. package/package.json +1 -1
  85. package/plugins-dist/latex-runtime.js +140 -0
  86. package/plugins-dist/latex.js +178 -0
  87. package/plugins-dist/slides-charts-lite-runtime.js +179 -0
  88. package/plugins-dist/slides-charts-lite.js +198 -0
  89. package/plugins-dist/slides-visuals.css +166 -0
  90. package/plugins-dist/slides-visuals.js +124 -33
  91. package/registry/plugins.yaml +30 -5
  92. package/schemas/v0/site.schema.json +56 -0
  93. package/scripts/build.ts +195 -70
  94. package/scripts/bundle.ts +122 -11
  95. package/scripts/dev.ts +345 -178
  96. package/src/__tests__/brief.test.ts +151 -0
  97. package/src/__tests__/build.test.ts +234 -4
  98. package/src/__tests__/bundle.test.ts +134 -0
  99. package/src/__tests__/dev-plugin-errors.test.ts +20 -0
  100. package/src/__tests__/fixtures/fences/slides-visuals/invalid/flow-branching-no-source.md +5 -0
  101. package/src/__tests__/fixtures/fences/slides-visuals/invalid/flow-converging-no-target.md +6 -0
  102. package/src/__tests__/fixtures/fences/slides-visuals/invalid/staircase-empty-steps.md +3 -0
  103. package/src/__tests__/fixtures/fences/slides-visuals/invalid/timeline-horizontal-no-events.md +2 -0
  104. package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-branching-no-split.md +7 -0
  105. package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-branching.md +8 -0
  106. package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-converging-no-merge.md +7 -0
  107. package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-converging.md +8 -0
  108. package/src/__tests__/fixtures/fences/slides-visuals/valid/staircase-down.md +7 -0
  109. package/src/__tests__/fixtures/fences/slides-visuals/valid/staircase.md +8 -0
  110. package/src/__tests__/fixtures/fences/slides-visuals/valid/timeline-horizontal.md +9 -0
  111. package/src/__tests__/fixtures/fences/slides-visuals/valid/timeline-vertical.md +10 -0
  112. package/src/__tests__/init.test.ts +51 -2
  113. package/src/__tests__/latex-runtime.bun.test.ts +35 -0
  114. package/src/__tests__/shared.test.ts +621 -1
  115. package/src/__tests__/slides-charts-lite-runtime.bun.test.ts +45 -0
  116. package/src/__tests__/slides-visuals-runtime-regressions.bun.test.ts +33 -0
  117. package/src/cli.ts +11 -4
  118. package/src/commands/init.ts +1 -1
  119. package/src/shared.ts +761 -18
  120. package/src/site/styles.css +39 -4
  121. package/src/site/template.html +5 -2
  122. package/src/templates/brief.ts +486 -0
  123. package/src/templates/deck.ts +59 -0
  124. package/src/templates/driver.ts +46 -13
  125. package/src/templates/handbook.ts +32 -0
  126. package/src/templates/runbook.ts +32 -0
@@ -11,6 +11,7 @@
11
11
  import { mkdir, readFile, writeFile } from "node:fs/promises";
12
12
  import { dirname, join } from "node:path";
13
13
  import { fileURLToPath } from "node:url";
14
+ import { brief } from "./brief.ts";
14
15
  import { crucible } from "./crucible.ts";
15
16
  import { deck } from "./deck.ts";
16
17
  import { handbook } from "./handbook.ts";
@@ -56,6 +57,7 @@ export function listTemplates(): TemplateDef[] {
56
57
  registerTemplate(minimal);
57
58
  registerTemplate(deck);
58
59
  registerTemplate(handbook);
60
+ registerTemplate(brief);
59
61
  registerTemplate(pipeline);
60
62
  registerTemplate(productbook);
61
63
  registerTemplate(runbook);
@@ -499,6 +501,7 @@ function generateAgentsMd(ctx: TemplateContext): string {
499
501
  const isProductbook = templateType === "productbook";
500
502
  const isServicebook = templateType === "servicebook";
501
503
  const isCrucible = templateType === "crucible";
504
+ const isBrief = templateType === "brief";
502
505
 
503
506
  const typeLabel = isCrucible
504
507
  ? "information architecture SSOT"
@@ -506,11 +509,13 @@ function generateAgentsMd(ctx: TemplateContext): string {
506
509
  ? "professional services catalog"
507
510
  : isProductbook
508
511
  ? "product and domain documentation site"
509
- : isPipeline
510
- ? "pipeline operations site"
511
- : templateType === "runbook"
512
- ? "runbook"
513
- : "documentation site";
512
+ : isBrief
513
+ ? "external audience brief"
514
+ : isPipeline
515
+ ? "pipeline operations site"
516
+ : templateType === "runbook"
517
+ ? "runbook"
518
+ : "documentation site";
514
519
 
515
520
  return `# ${ctx.branding.siteName} - AI Agent Guide
516
521
 
@@ -596,8 +601,28 @@ ${
596
601
  ### Guides
597
602
  - Write for the audience (team member vs end user)
598
603
  - Start with what they need to know first`
599
- : isPipeline
600
- ? `### Pipeline Stages
604
+ : isBrief
605
+ ? `### Audience and Tone
606
+ - Write for external readers evaluating or onboarding
607
+ - Keep tone **informational and professional**
608
+ - Avoid internal jargon and sales-heavy language
609
+
610
+ ### Product and Capabilities
611
+ - Explain what it is, who it serves, and why it matters
612
+ - Focus on customer outcomes before implementation details
613
+ - Use concise tables for capabilities and differentiators
614
+
615
+ ### Use Cases
616
+ - Structure each use case as **problem -> solution -> outcome**
617
+ - Include before/after metrics where possible
618
+ - Keep customer profile language specific and clear
619
+
620
+ ### Getting Started and Reference
621
+ - Document prerequisites and integration requirements as checklists
622
+ - Provide realistic onboarding timelines and phase definitions
623
+ - Keep architecture, FAQ, and contacts current and easy to scan`
624
+ : isPipeline
625
+ ? `### Pipeline Stages
601
626
  - Start with **Objective** (what this stage accomplishes)
602
627
  - List **Prerequisites** as checkboxes
603
628
  - Number **Steps** explicitly with verification
@@ -618,8 +643,8 @@ ${
618
643
  - Use checkbox format: \`- [ ] Item\`
619
644
  - Group by phase or category
620
645
  - Include Go/No-Go decision point`
621
- : isOperational
622
- ? `### Procedures
646
+ : isOperational
647
+ ? `### Procedures
623
648
  - Start with **Objective** (what this accomplishes)
624
649
  - List **Prerequisites** as checkboxes
625
650
  - Number **Steps** explicitly with verification
@@ -636,7 +661,7 @@ ${
636
661
  - Use checkbox format: \`- [ ] Item\`
637
662
  - Group by phase or category
638
663
  - Include Go/No-Go decision point`
639
- : `### General Guidelines
664
+ : `### General Guidelines
640
665
  - Use clear, descriptive headings
641
666
  - Include code examples where helpful
642
667
  - Link related content using relative paths
@@ -677,12 +702,18 @@ ${
677
702
  - \`analyst\` - Research, data modeling, business process analysis
678
703
  - \`devlead\` - Architecture, operations, implementation
679
704
  - \`infoarch\` - Documentation structure, consistency`
680
- : isOperational
681
- ? `Recommended roles for ${isPipeline ? "pipeline operations" : "runbook"} maintenance:
705
+ : isBrief
706
+ ? `Recommended roles for brief maintenance:
707
+ - \`infoarch\` - Information architecture, narrative clarity, external readability
708
+ - \`devlead\` - Technical accuracy for architecture, integrations, requirements
709
+ - \`advisor\` - Client-facing framing and stakeholder alignment
710
+ - \`prodstrat\` - Value proposition, audience fit, use-case quality`
711
+ : isOperational
712
+ ? `Recommended roles for ${isPipeline ? "pipeline operations" : "runbook"} maintenance:
682
713
  - \`devlead\` - Implementation, fixing procedures
683
714
  - \`infoarch\` - Documentation structure, organization
684
715
  - \`qa\` - Testing, validation, checklists`
685
- : `Recommended roles for documentation:
716
+ : `Recommended roles for documentation:
686
717
  - \`devlead\` - Technical content, code examples
687
718
  - \`infoarch\` - Structure, navigation, organization
688
719
  - \`prodmktg\` - Messaging, user-facing content`
@@ -727,6 +758,8 @@ async function addAiAssistInstrumentation(root: string, ctx: TemplateContext): P
727
758
  relevantRoles.push("advisor.yaml", "analyst.yaml");
728
759
  } else if (ctx.template.id === "productbook" || ctx.template.id === "servicebook") {
729
760
  relevantRoles.push("prodstrat.yaml", "advisor.yaml", "analyst.yaml");
761
+ } else if (ctx.template.id === "brief") {
762
+ relevantRoles.push("prodstrat.yaml", "advisor.yaml");
730
763
  } else if (ctx.template.id !== "runbook" && ctx.template.id !== "pipeline") {
731
764
  relevantRoles.push("prodmktg.yaml");
732
765
  }
@@ -326,8 +326,40 @@ Place images in \`assets/\` and reference them:
326
326
  | Asset | Location | Recommended Size |
327
327
  |-------|----------|------------------|
328
328
  | Logo | \`assets/brand/logo.png\` | 200x50px (or SVG) |
329
+ | Logo (dark) | \`assets/brand/logo-dark.png\` | Same as logo, for dark backgrounds |
329
330
  | Favicon | \`assets/brand/favicon.ico\` | 32x32px |
330
331
  | Social image | \`assets/brand/social.png\` | 1200x630px |
332
+ | Footer logo | \`assets/brand/footer-logo.png\` | Max height 20px |
333
+
334
+ ### Header Logo
335
+
336
+ Single logo — kitfly auto-adjusts brightness in dark mode:
337
+
338
+ \`\`\`yaml
339
+ brand:
340
+ logo: "assets/brand/logo.png"
341
+ \`\`\`
342
+
343
+ Light + dark variants — no automatic filters applied:
344
+
345
+ \`\`\`yaml
346
+ brand:
347
+ logo: "assets/brand/logo.png"
348
+ logoDark: "assets/brand/logo-dark.png"
349
+ \`\`\`
350
+
351
+ ### Footer Logo
352
+
353
+ Add a separate logo to the footer ribbon (e.g. a parent company or client logo):
354
+
355
+ \`\`\`yaml
356
+ footer:
357
+ logo: "assets/brand/footer-logo.png"
358
+ logoUrl: "https://example.com" # optional link
359
+ logoAlt: "Company Name" # optional alt text
360
+ logoHeight: 20 # optional max height in px
361
+ logoDark: "assets/brand/footer-logo-dark.png" # optional dark variant
362
+ \`\`\`
331
363
 
332
364
  ## Getting Help
333
365
 
@@ -714,7 +714,39 @@ footer:
714
714
  | Asset | Location | Recommended Size |
715
715
  |-------|----------|------------------|
716
716
  | Logo | \`assets/brand/logo.png\` | 200x50px (or SVG) |
717
+ | Logo (dark) | \`assets/brand/logo-dark.png\` | Same as logo, for dark backgrounds |
717
718
  | Favicon | \`assets/brand/favicon.ico\` | 32x32px |
719
+ | Footer logo | \`assets/brand/footer-logo.png\` | Max height 20px |
720
+
721
+ ### Header Logo
722
+
723
+ Single logo — kitfly auto-adjusts brightness in dark mode:
724
+
725
+ \`\`\`yaml
726
+ brand:
727
+ logo: "assets/brand/logo.png"
728
+ \`\`\`
729
+
730
+ Light + dark variants — no automatic filters applied:
731
+
732
+ \`\`\`yaml
733
+ brand:
734
+ logo: "assets/brand/logo.png"
735
+ logoDark: "assets/brand/logo-dark.png"
736
+ \`\`\`
737
+
738
+ ### Footer Logo
739
+
740
+ Add a separate logo to the footer ribbon (e.g. a parent company or client logo):
741
+
742
+ \`\`\`yaml
743
+ footer:
744
+ logo: "assets/brand/footer-logo.png"
745
+ logoUrl: "https://example.com" # optional link
746
+ logoAlt: "Company Name" # optional alt text
747
+ logoHeight: 20 # optional max height in px
748
+ logoDark: "assets/brand/footer-logo-dark.png" # optional dark variant
749
+ \`\`\`
718
750
 
719
751
  ## Adding Content
720
752