@dzhechkov/keysarium 1.4.0 → 1.5.1
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.
- package/README.md +52 -5
- package/README.ru.md +541 -0
- package/bin/cli.js +0 -0
- package/package.json +11 -9
- package/templates/.claude/commands/analyst-manual.md +38 -0
- package/templates/.claude/commands/casarium.md +55 -4
- package/templates/.claude/commands/feature-adr.md +8 -0
- package/templates/.claude/rules/trust-tiers.md +5 -0
- package/templates/.claude/shards/feature-adr.shard.md +64 -10
- package/templates/.claude/shards/phase-ai-factory.shard.md +109 -0
- package/templates/.claude/skills/ai-factory-mapper/README.md +90 -0
- package/templates/.claude/skills/ai-factory-mapper/SKILL.md +309 -0
- package/templates/.claude/skills/ai-factory-mapper/assets/report-template.md +123 -0
- package/templates/.claude/skills/ai-factory-mapper/references/catalog.md +230 -0
- package/templates/.claude/skills/ai-factory-mapper/references/coverage-formula.md +219 -0
- package/templates/.claude/skills/ai-factory-mapper/references/decomposition-checklist.md +183 -0
- package/templates/.claude/skills/ai-factory-mapper/references/pattern-library.md +312 -0
- package/templates/.claude/skills/ai-factory-mapper/scripts/build_docx_report.js +423 -0
- package/templates/.claude/skills/analyst-manual-full/SKILL.md +286 -0
- package/templates/.claude/skills/edu-site-generator/SKILL.md +254 -0
- package/templates/.claude/skills/edu-site-generator/examples/sample-course-structure.md +116 -0
- package/templates/.claude/skills/edu-site-generator/modules/00-content-analysis.md +84 -0
- package/templates/.claude/skills/edu-site-generator/modules/01-course-structure.md +75 -0
- package/templates/.claude/skills/edu-site-generator/modules/02-data-generation.md +186 -0
- package/templates/.claude/skills/edu-site-generator/modules/03-scaffold.md +249 -0
- package/templates/.claude/skills/edu-site-generator/modules/04-components.md +130 -0
- package/templates/.claude/skills/edu-site-generator/modules/05-gamification.md +163 -0
- package/templates/.claude/skills/edu-site-generator/modules/06-deploy.md +88 -0
- package/templates/.claude/skills/edu-site-generator/modules/07-verification.md +97 -0
- package/templates/.claude/skills/edu-site-generator/references/component-templates.md +436 -0
- package/templates/.claude/skills/edu-site-generator/references/data-schemas.md +164 -0
- package/templates/.claude/skills/edu-site-generator/references/exercise-catalog.md +110 -0
- package/templates/.claude/skills/edu-site-generator/references/tech-stack.md +69 -0
- package/templates/.claude/skills/feature-adr/SKILL.md +245 -59
- package/templates/.claude/skills/feature-adr/modules/03-adr.md +43 -0
- package/templates/.claude/skills/feature-adr/modules/03.5-ideation-swarm.md +180 -0
- package/templates/.claude/skills/feature-adr/modules/06-implementation-plan.md +56 -7
- package/templates/.claude/skills/feature-adr/modules/08-qe.md +87 -23
- package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +305 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/README.md +143 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/brutal-honesty-review.md +240 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/chaos-engineering-resilience.md +163 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/code-goal-planner.md +446 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/enterprise-integration-testing.md +111 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/mutation-testing.md +236 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/performance-testing.md +315 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-ideation-swarm.md +126 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-production-swarm.md +108 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-coverage-analysis.md +193 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/qe-requirements-validation.md +254 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/regression-testing.md +233 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/risk-based-testing.md +212 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/security-testing.md +311 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/shift-left-testing.md +231 -0
- package/templates/.claude/skills/feature-adr/references/agentic-qe/tdd-london-chicago.md +249 -0
- package/templates/.claude/skills/transcript-site-generator/SKILL.md +287 -0
- package/templates/.claude/skills/transcript-site-generator/examples/sample-text-only-site.md +123 -0
- package/templates/.claude/skills/transcript-site-generator/examples/sample-transcript-site.md +134 -0
- package/templates/.claude/skills/transcript-site-generator/modules/00-input-analysis.md +132 -0
- package/templates/.claude/skills/transcript-site-generator/modules/01-content-parsing.md +117 -0
- package/templates/.claude/skills/transcript-site-generator/modules/02-site-generation.md +293 -0
- package/templates/.claude/skills/transcript-site-generator/modules/03-interactivity.md +406 -0
- package/templates/.claude/skills/transcript-site-generator/modules/04-deploy.md +130 -0
- package/templates/.claude/skills/transcript-site-generator/modules/05-verification.md +155 -0
- package/templates/.claude/skills/transcript-site-generator/references/component-catalog.md +86 -0
- package/templates/.claude/skills/transcript-site-generator/references/data-schemas.md +123 -0
- package/templates/.claude/skills/transcript-site-generator/references/tech-stack.md +132 -0
- package/templates/CLAUDE.md +9 -2
- package/templates/docs/edu-site-generator/01-deployment-guide.md +911 -0
- package/templates/docs/edu-site-generator/02-admin-guide.md +901 -0
- package/templates/docs/edu-site-generator/03-user-guide.md +1008 -0
- package/templates/docs/edu-site-generator/04-infrastructure-requirements.md +489 -0
- package/templates/docs/edu-site-generator/05-architecture.md +902 -0
- package/templates/docs/edu-site-generator/06-user-flows.md +759 -0
- package/templates/docs/transcript-site-generator/01-deployment-guide.md +1042 -0
- package/templates/docs/transcript-site-generator/02-admin-guide.md +918 -0
- package/templates/docs/transcript-site-generator/03-user-guide.md +925 -0
- package/templates/docs/transcript-site-generator/04-infrastructure-requirements.md +482 -0
- package/templates/docs/transcript-site-generator/05-architecture.md +1068 -0
- package/templates/docs/transcript-site-generator/06-user-flows.md +855 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Component Catalog Reference
|
|
2
|
+
|
|
3
|
+
## HTML Sections (in index.html)
|
|
4
|
+
|
|
5
|
+
Since this is a static site, "components" are HTML sections within the single `index.html` file. Each section below maps to a distinct HTML block.
|
|
6
|
+
|
|
7
|
+
### Layout Components
|
|
8
|
+
|
|
9
|
+
| Component | HTML Element | ID | Description |
|
|
10
|
+
|-----------|-------------|-----|-------------|
|
|
11
|
+
| Progress Bar | `<div>` | `progress-bar` | Fixed top bar showing scroll progress |
|
|
12
|
+
| Header | `<header>` | - | Sticky header with title, stats, dark mode, search |
|
|
13
|
+
| Sidebar TOC | `<nav>` | `sidebar` | Fixed sidebar with section links, scroll-spy active state |
|
|
14
|
+
| Mobile Menu Button | `<button>` | `menu-toggle` | Hamburger button, visible only on `lg:hidden` |
|
|
15
|
+
| Footer | `<footer>` | - | Author credits, video link, date |
|
|
16
|
+
|
|
17
|
+
### Interactive Components
|
|
18
|
+
|
|
19
|
+
| Component | HTML Element | ID | Trigger |
|
|
20
|
+
|-----------|-------------|-----|---------|
|
|
21
|
+
| Search Modal | `<div>` | `search-modal` | Click search button or Ctrl+K |
|
|
22
|
+
| Search Input | `<input>` | `search-input` | Auto-focused when modal opens |
|
|
23
|
+
| Search Results | `<div>` | `search-results` | Populated by app.js after 2+ chars |
|
|
24
|
+
| Theme Toggle | `<button>` | `theme-toggle` | Toggles `dark` class on `<html>` |
|
|
25
|
+
| Theme Icon | `<i>` | `theme-icon` | Swaps between `fa-moon` and `fa-sun` |
|
|
26
|
+
| Back to Top | `<button>` | `back-to-top` | Appears after 500px scroll |
|
|
27
|
+
| Copy Button | `<button>` | - (per section) | Copies section prose to clipboard |
|
|
28
|
+
| YouTube Player | `<iframe>` | `yt-player` | Loaded on page, seeked via timestamp clicks |
|
|
29
|
+
|
|
30
|
+
### Content Components
|
|
31
|
+
|
|
32
|
+
| Component | HTML Element | ID Pattern | Description |
|
|
33
|
+
|-----------|-------------|------------|-------------|
|
|
34
|
+
| Transcript Section | `<section>` | `section-{slug}` | One per transcript section |
|
|
35
|
+
| Section Title | `<h2>` | - | Includes optional timestamp link |
|
|
36
|
+
| Timestamp Link | `<a>` | - | Calls `seekTo(seconds)` on click |
|
|
37
|
+
| Speaker Badge | `<span>` | - | Colored badge with speaker name + role |
|
|
38
|
+
| Prose Container | `<div class="prose">` | - | Contains rendered transcript paragraphs |
|
|
39
|
+
| TOC Link | `<a class="toc-link">` | `data-section="{id}"` | Sidebar link, highlighted by scroll-spy |
|
|
40
|
+
|
|
41
|
+
## JavaScript Modules (in app.js)
|
|
42
|
+
|
|
43
|
+
All functionality is in a single `app.js` file, organized into numbered sections:
|
|
44
|
+
|
|
45
|
+
| # | Module | Key APIs Used | Elements Referenced |
|
|
46
|
+
|---|--------|--------------|---------------------|
|
|
47
|
+
| 1 | Dark Mode | `localStorage`, `classList` | `#theme-toggle`, `#theme-icon`, `<html>` |
|
|
48
|
+
| 2 | Mobile Nav | `classList.toggle` | `#menu-toggle`, `#sidebar` |
|
|
49
|
+
| 3 | TOC Scroll-Spy | `IntersectionObserver` | `.toc-link`, `main section[id]` |
|
|
50
|
+
| 4 | Progress Bar | `requestAnimationFrame`, `scrollY` | `#progress-bar` |
|
|
51
|
+
| 5 | Back to Top | `scrollY`, `scrollTo` | `#back-to-top` |
|
|
52
|
+
| 6 | Search Modal | `setTimeout` (debounce), DOM generation | `#search-btn/modal/input/results` |
|
|
53
|
+
| 7 | Keyboard Shortcuts | `keydown` event | Ctrl+K, Escape |
|
|
54
|
+
| 8 | Copy Quote | `navigator.clipboard.writeText` | `.copy-btn` per section |
|
|
55
|
+
| 9 | YouTube Seek | YouTube IFrame Player API (`YT.Player`) + `postMessage` fallback | `#yt-player` |
|
|
56
|
+
|
|
57
|
+
## CSS Classes (Tailwind)
|
|
58
|
+
|
|
59
|
+
### Key Custom Classes
|
|
60
|
+
|
|
61
|
+
| Class | Purpose | Where Used |
|
|
62
|
+
|-------|---------|------------|
|
|
63
|
+
| `toc-link` | TOC navigation link, targeted by scroll-spy | Sidebar `<a>` elements |
|
|
64
|
+
| `copy-btn` | Copy button, icon swap on click | Section copy buttons |
|
|
65
|
+
| `no-print` | Hidden in print media | Sidebar, buttons, progress bar |
|
|
66
|
+
| `prose` | Tailwind typography styling | Transcript content container |
|
|
67
|
+
| `scroll-mt-20` | Scroll margin for sticky header offset | Section elements |
|
|
68
|
+
| `line-clamp-1` | Truncate title to single line | Header title |
|
|
69
|
+
|
|
70
|
+
### Responsive Breakpoints
|
|
71
|
+
|
|
72
|
+
| Breakpoint | Width | Layout Change |
|
|
73
|
+
|-----------|-------|---------------|
|
|
74
|
+
| Default | < 1024px | Sidebar hidden, hamburger menu shown |
|
|
75
|
+
| `lg:` | >= 1024px | Sidebar visible, hamburger hidden |
|
|
76
|
+
| `sm:` | >= 640px | Keyboard shortcut hints shown |
|
|
77
|
+
|
|
78
|
+
### Dark Mode Classes Pattern
|
|
79
|
+
|
|
80
|
+
Every visible element follows the pattern:
|
|
81
|
+
```
|
|
82
|
+
bg-white dark:bg-gray-900
|
|
83
|
+
text-gray-900 dark:text-gray-100
|
|
84
|
+
border-gray-200 dark:border-gray-700
|
|
85
|
+
hover:bg-gray-100 dark:hover:bg-gray-800
|
|
86
|
+
```
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Data Schemas Reference
|
|
2
|
+
|
|
3
|
+
## Section Schema
|
|
4
|
+
|
|
5
|
+
Each transcript section is represented internally during generation:
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
interface Section {
|
|
9
|
+
id: string; // kebab-case slug, e.g. "early-career"
|
|
10
|
+
order: number; // 1-based sequential
|
|
11
|
+
title: string; // Display title, e.g. "2. Early Career"
|
|
12
|
+
shortTitle: string; // 2-3 words for mobile TOC
|
|
13
|
+
timestamp: string | null; // "HH:MM:SS" or "MM:SS" or null
|
|
14
|
+
timestampSeconds: number | null; // For YouTube seek, or null
|
|
15
|
+
content: string; // Full text, paragraphs separated by \n\n
|
|
16
|
+
wordCount: number; // Words in content
|
|
17
|
+
speakerName: string | null; // e.g. "Boris Cherny"
|
|
18
|
+
speakerRole: string | null; // "Host" | "Guest" | null
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Section ID Rules
|
|
23
|
+
|
|
24
|
+
- Derived from title, lowercase, kebab-case
|
|
25
|
+
- Remove numbers and punctuation
|
|
26
|
+
- Max 40 characters
|
|
27
|
+
- Must be unique across all sections
|
|
28
|
+
- Prefixed with `section-` in HTML (e.g., `id="section-early-career"`)
|
|
29
|
+
|
|
30
|
+
### Content Formatting
|
|
31
|
+
|
|
32
|
+
In the HTML rendering, content follows these rules:
|
|
33
|
+
- Paragraphs → `<p>` tags inside a `.prose` container
|
|
34
|
+
- `**bold**` → `<strong>`
|
|
35
|
+
- `*italic*` → `<em>`
|
|
36
|
+
- Inline code → `<code class="...">`
|
|
37
|
+
- URLs → `<a href="..." target="_blank" class="text-primary-500 hover:underline">`
|
|
38
|
+
- Line breaks within a paragraph → `<br />`
|
|
39
|
+
- Special characters escaped: `<`, `>`, `&`, `"`
|
|
40
|
+
|
|
41
|
+
## Metadata Schema
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
interface Metadata {
|
|
45
|
+
title: string; // Page title
|
|
46
|
+
description: string; // Max 160 chars for SEO
|
|
47
|
+
author: string;
|
|
48
|
+
language: "ru" | "en";
|
|
49
|
+
date: string; // ISO 8601 date
|
|
50
|
+
|
|
51
|
+
video: {
|
|
52
|
+
url: string; // Full YouTube URL
|
|
53
|
+
videoId: string; // 11-char YouTube ID
|
|
54
|
+
embedUrl: string; // https://www.youtube.com/embed/{videoId}
|
|
55
|
+
duration: string; // ISO 8601 duration (PT1H23M)
|
|
56
|
+
channelName: string;
|
|
57
|
+
publishDate: string;
|
|
58
|
+
} | null;
|
|
59
|
+
|
|
60
|
+
stats: {
|
|
61
|
+
totalWords: number;
|
|
62
|
+
estimatedReadMinutes: number; // totalWords / 200, rounded up
|
|
63
|
+
sectionCount: number;
|
|
64
|
+
speakerCount: number;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
speakers: Array<{
|
|
68
|
+
name: string;
|
|
69
|
+
role: "Host" | "Guest" | "Speaker";
|
|
70
|
+
}>;
|
|
71
|
+
|
|
72
|
+
seo: {
|
|
73
|
+
ogTitle: string;
|
|
74
|
+
ogDescription: string;
|
|
75
|
+
ogType: "article" | "video.other";
|
|
76
|
+
ogImage: string | null; // YouTube thumbnail or null
|
|
77
|
+
twitterCard: "summary_large_image";
|
|
78
|
+
jsonLdType: "Article" | "VideoObject";
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## VTT Subtitle Schema (Input)
|
|
84
|
+
|
|
85
|
+
When parsing YouTube VTT files:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
WEBVTT
|
|
89
|
+
|
|
90
|
+
00:00:00.000 --> 00:00:05.500
|
|
91
|
+
First line of subtitle text
|
|
92
|
+
|
|
93
|
+
00:00:03.000 --> 00:00:08.000
|
|
94
|
+
Second line (may overlap with first)
|
|
95
|
+
|
|
96
|
+
00:00:08.000 --> 00:00:12.500
|
|
97
|
+
Third line
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### VTT Parsing Rules
|
|
101
|
+
|
|
102
|
+
1. Skip `WEBVTT` header line and any `NOTE` or `STYLE` blocks
|
|
103
|
+
2. Parse timestamp lines: `HH:MM:SS.mmm --> HH:MM:SS.mmm`
|
|
104
|
+
3. Extract text lines between timestamp blocks
|
|
105
|
+
4. Remove HTML tags (`<c>`, `</c>`, `<c.colorE5E5E5>`, etc.)
|
|
106
|
+
5. Deduplicate: if two consecutive segments have >80% text overlap, keep only the later one
|
|
107
|
+
6. Merge segments into paragraphs: group consecutive segments by speaker or 30-second gaps
|
|
108
|
+
7. Round timestamps to nearest second for display
|
|
109
|
+
|
|
110
|
+
## GitHub Pages Deploy Schema
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
# .github/workflows/deploy.yml structure
|
|
114
|
+
name: Deploy to GitHub Pages
|
|
115
|
+
on: push (main) + workflow_dispatch
|
|
116
|
+
permissions: contents:read, pages:write, id-token:write
|
|
117
|
+
jobs.deploy:
|
|
118
|
+
steps:
|
|
119
|
+
- checkout
|
|
120
|
+
- configure-pages
|
|
121
|
+
- upload-pages-artifact (path: 'docs')
|
|
122
|
+
- deploy-pages
|
|
123
|
+
```
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Tech Stack Reference
|
|
2
|
+
|
|
3
|
+
## Static Site Architecture (Default)
|
|
4
|
+
|
|
5
|
+
The transcript site is a pure static site with zero build step. This architecture was chosen for maximum simplicity and instant deployment.
|
|
6
|
+
|
|
7
|
+
### Core Stack
|
|
8
|
+
|
|
9
|
+
| Technology | Version | Role | Delivery |
|
|
10
|
+
|-----------|---------|------|----------|
|
|
11
|
+
| HTML5 | - | Page structure, semantic markup | Inline |
|
|
12
|
+
| Tailwind CSS | 3.x (CDN) | Utility-first styling, dark mode, responsive | CDN: `cdn.tailwindcss.com` |
|
|
13
|
+
| Vanilla JavaScript | ES2020+ | All interactivity | `docs/static/app.js` |
|
|
14
|
+
| Font Awesome | 6.5.x | Icons (moon, sun, search, copy, bars, arrow-up, youtube) | CDN: `cdnjs.cloudflare.com` |
|
|
15
|
+
|
|
16
|
+
### Why Static (Not React/Vite)?
|
|
17
|
+
|
|
18
|
+
| Criterion | Static HTML | React + Vite SPA |
|
|
19
|
+
|-----------|------------|-------------------|
|
|
20
|
+
| Build step | None | Required (npm install + npm run build) |
|
|
21
|
+
| Deploy complexity | Push `docs/` | Build + deploy `dist/` |
|
|
22
|
+
| Dependencies | 0 | 15+ npm packages |
|
|
23
|
+
| Load time | Instant (single file) | Initial bundle load |
|
|
24
|
+
| Maintenance | Zero | Dependency updates |
|
|
25
|
+
| GitHub Pages setup | Trivial (serve docs/) | Needs workflow |
|
|
26
|
+
| File count | 3 files | 30+ files |
|
|
27
|
+
| Searchability | Full HTML content | JavaScript-rendered |
|
|
28
|
+
| SEO | Native | Requires SSR/prerender |
|
|
29
|
+
|
|
30
|
+
**Bottom line:** For a read-only transcript site, static HTML is superior in every dimension.
|
|
31
|
+
|
|
32
|
+
### CDN Links (Development Default)
|
|
33
|
+
|
|
34
|
+
> **Note:** `cdn.tailwindcss.com` is the Tailwind Play CDN intended for development and prototyping.
|
|
35
|
+
> It works well for transcript sites (read-only, low-traffic), but is NOT recommended by the
|
|
36
|
+
> Tailwind team for high-traffic production use. For production hardening, see the self-hosted
|
|
37
|
+
> alternative below.
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<!-- Tailwind CSS (Play CDN — development/prototyping) -->
|
|
41
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
42
|
+
|
|
43
|
+
<!-- Font Awesome (with SRI hash) -->
|
|
44
|
+
<link rel="stylesheet"
|
|
45
|
+
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
|
|
46
|
+
integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA=="
|
|
47
|
+
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Self-Hosted Tailwind Alternative (Production)
|
|
51
|
+
|
|
52
|
+
For high-traffic or offline-capable deployments, replace the Play CDN with a pre-built CSS file:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Install Tailwind CLI (one-time, no npm project needed)
|
|
56
|
+
curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-linux-x64
|
|
57
|
+
chmod +x tailwindcss-linux-x64
|
|
58
|
+
|
|
59
|
+
# Generate minified CSS from index.html
|
|
60
|
+
./tailwindcss-linux-x64 -i /dev/null -o docs/static/tailwind.min.css --content docs/index.html --minify
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Then in `index.html`, replace the CDN script with:
|
|
64
|
+
```html
|
|
65
|
+
<link rel="stylesheet" href="static/tailwind.min.css" />
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The user can request this mode via: "use self-hosted Tailwind" or "make it work offline".
|
|
69
|
+
|
|
70
|
+
### Tailwind Configuration
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
tailwind.config = {
|
|
74
|
+
darkMode: 'class',
|
|
75
|
+
theme: {
|
|
76
|
+
extend: {
|
|
77
|
+
colors: {
|
|
78
|
+
primary: {
|
|
79
|
+
50: '#eef2ff', 100: '#e0e7ff', 200: '#c7d2fe', 300: '#a5b4fc',
|
|
80
|
+
400: '#818cf8', 500: '#6366f1', 600: '#4f46e5', 700: '#4338ca',
|
|
81
|
+
800: '#3730a3', 900: '#312e81', 950: '#1e1b4b'
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Browser Support
|
|
90
|
+
|
|
91
|
+
- Chrome 80+, Firefox 78+, Safari 14+, Edge 80+
|
|
92
|
+
- `IntersectionObserver`: supported in all modern browsers
|
|
93
|
+
- `navigator.clipboard.writeText`: requires HTTPS (works on GitHub Pages)
|
|
94
|
+
- `backdrop-filter: blur()`: Safari 14+, Chrome 76+
|
|
95
|
+
|
|
96
|
+
### YouTube Integration
|
|
97
|
+
|
|
98
|
+
- Embed via `<iframe>` with `enablejsapi=1` parameter
|
|
99
|
+
- Timestamp seeking via YouTube IFrame Player API (`YT.Player` + `seekTo()`)
|
|
100
|
+
- Fallback: `postMessage` to iframe if IFrame API hasn't loaded yet
|
|
101
|
+
- Thumbnail URL pattern: `https://img.youtube.com/vi/{VIDEO_ID}/maxresdefault.jpg`
|
|
102
|
+
|
|
103
|
+
### CDN Availability Note
|
|
104
|
+
|
|
105
|
+
The site depends on external CDNs (Tailwind CSS, Font Awesome). If CDNs are unavailable (corporate firewalls, offline):
|
|
106
|
+
- Content remains fully readable (semantic HTML)
|
|
107
|
+
- Layout will be unstyled but functional
|
|
108
|
+
- Icons will not display (consider adding `aria-label` on icon-only buttons as fallback)
|
|
109
|
+
|
|
110
|
+
### Optional: yt-dlp
|
|
111
|
+
|
|
112
|
+
For extracting transcripts from YouTube videos:
|
|
113
|
+
```bash
|
|
114
|
+
pip install yt-dlp
|
|
115
|
+
|
|
116
|
+
# Extract subtitles
|
|
117
|
+
yt-dlp --write-auto-sub --sub-lang ru,en --skip-download --sub-format vtt -o "transcript" "<URL>"
|
|
118
|
+
|
|
119
|
+
# Get video metadata
|
|
120
|
+
yt-dlp --print title --print channel --print duration --skip-download "<URL>"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Output File Sizes (Typical)
|
|
124
|
+
|
|
125
|
+
| File | Size | Content |
|
|
126
|
+
|------|------|---------|
|
|
127
|
+
| `docs/index.html` | 50-150 KB | All HTML + inline content |
|
|
128
|
+
| `docs/static/app.js` | 10-12 KB | All JavaScript |
|
|
129
|
+
| `docs/static/style.css` | 0.5 KB | Print styles + overrides |
|
|
130
|
+
| **Total** | **60-165 KB** | **Before CDN resources** |
|
|
131
|
+
|
|
132
|
+
CDN resources are cached by the browser after first load.
|
package/templates/CLAUDE.md
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
/casarium [текст кейса] — Полный пайплайн (7 фаз)
|
|
11
|
+
/casarium --ai-factory [текст] — Пайплайн + маппинг на Cloud.ru AI Factory (все фазы)
|
|
11
12
|
/new-research [название] — Создать новое исследование
|
|
12
13
|
/parallel-research кейс1 | кейс2 — Запустить несколько параллельно
|
|
13
14
|
/harvest [путь или "all"] — Извлечь знания после проекта
|
|
@@ -28,6 +29,8 @@
|
|
|
28
29
|
|
|
29
30
|
/feature-adr [описание фичи] — Adaptive Feature Development (9 шагов, S/M/L/XL)
|
|
30
31
|
|
|
32
|
+
/analyst-manual [тема/задача] — Стратегический анализ с checkpoint'ами (explore → research → solve)
|
|
33
|
+
|
|
31
34
|
/bto [путь или описание] — Build-Test-Optimize полный цикл
|
|
32
35
|
/bto-build [описание] — Генерация нового скилла/команды
|
|
33
36
|
/bto-benchmark [путь] — Детерминистический бенчмаркинг артефакта
|
|
@@ -45,7 +48,7 @@ product-keysarium-2026/
|
|
|
45
48
|
├── TOOLKIT_HARVEST.md ← Трекер знаний для извлечения
|
|
46
49
|
├── .claude/
|
|
47
50
|
│ ├── commands/ ← Slash-команды (пайплайн)
|
|
48
|
-
│ │ ├── casarium.md ← /casarium — полный пайплайн
|
|
51
|
+
│ │ ├── casarium.md ← /casarium — полный пайплайн (+ --ai-factory флаг)
|
|
49
52
|
│ │ ├── new-research.md ← /new-research — новое исследование
|
|
50
53
|
│ │ ├── parallel-research.md ← /parallel-research — параллельные кейсы
|
|
51
54
|
│ │ ├── discovery.md ← /discovery — Phase 0
|
|
@@ -75,6 +78,7 @@ product-keysarium-2026/
|
|
|
75
78
|
│ │ ├── phase-3-solve.shard.md
|
|
76
79
|
│ │ ├── phase-4-architecture.shard.md
|
|
77
80
|
│ │ ├── phase-5-presentation.shard.md
|
|
81
|
+
│ │ ├── phase-ai-factory.shard.md ← AI Factory mode (только при --ai-factory)
|
|
78
82
|
│ │ ├── bto-evaluation.shard.md
|
|
79
83
|
│ │ └── feature-adr.shard.md
|
|
80
84
|
│ └── skills/ ← Навыки (building blocks)
|
|
@@ -86,7 +90,9 @@ product-keysarium-2026/
|
|
|
86
90
|
│ ├── problem-solver-enhanced/ ← Решение проблем (TRIZ + Game Theory)
|
|
87
91
|
│ ├── reverse-engineering-unicorn/ ← Reverse engineering компаний
|
|
88
92
|
│ ├── feature-adr/ ← Adaptive feature development (9 steps, S/M/L/XL)
|
|
89
|
-
│
|
|
93
|
+
│ ├── knowledge-extractor/ ← Knowledge harvesting (5 agents, 7 categories, 8 gates)
|
|
94
|
+
│ ├── analyst-manual-full/ ← Композитный аналитик (explore + research + solve, manual checkpoints)
|
|
95
|
+
│ └── ai-factory-mapper/ ← Маппинг сценариев на Cloud.ru Evolution AI Factory (v1.0)
|
|
90
96
|
├── lib/ ← Библиотечные модули
|
|
91
97
|
│ ├── background-workers.md ← Протокол фоновых воркеров
|
|
92
98
|
│ ├── memory-protocol.md ← Протокол memory_query / memory_store
|
|
@@ -164,6 +170,7 @@ DISCOVERY → EXPLORE → RESEARCH → CJM PROTO → SOLVE → ARCHITECTU
|
|
|
164
170
|
8. **Governance shards** — каждая фаза загружает свой shard из `.claude/shards/`
|
|
165
171
|
9. **Model routing** — haiku для Layer 0-1, sonnet для research/judges, opus для creative work
|
|
166
172
|
10. **Trust tiers** — скиллы классифицированы (Tier 0-3), повышение через `/bto-test`
|
|
173
|
+
11. **`--ai-factory` флаг полностью аддитивен** — без флага поведение идентично предыдущим версиям; с флагом — маппинг на Cloud.ru AI Factory интегрируется во все фазы через `phase-ai-factory.shard.md`
|
|
167
174
|
|
|
168
175
|
## Governance System
|
|
169
176
|
|