@mytechtoday/augment-extensions 2.2.0 → 2.3.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.
Files changed (42) hide show
  1. package/README.md +154 -12
  2. package/augment-extensions/coding-standards/perl/README.md +173 -0
  3. package/cli/dist/commands/generate-shot-list/formatter/base-formatter.d.ts.map +1 -1
  4. package/cli/dist/commands/generate-shot-list/formatter/base-formatter.js +7 -5
  5. package/cli/dist/commands/generate-shot-list/formatter/base-formatter.js.map +1 -1
  6. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts +1 -0
  7. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.d.ts.map +1 -1
  8. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js +6 -0
  9. package/cli/dist/commands/generate-shot-list/formatter/json-formatter.js.map +1 -1
  10. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts +1 -0
  11. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.d.ts.map +1 -1
  12. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js +6 -0
  13. package/cli/dist/commands/generate-shot-list/formatter/jsonl-formatter.js.map +1 -1
  14. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts +14 -0
  15. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.d.ts.map +1 -1
  16. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js +44 -3
  17. package/cli/dist/commands/generate-shot-list/formatter/markdown-formatter.js.map +1 -1
  18. package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts +29 -1
  19. package/cli/dist/commands/generate-shot-list/generator/context-builder.d.ts.map +1 -1
  20. package/cli/dist/commands/generate-shot-list/generator/context-builder.js +326 -27
  21. package/cli/dist/commands/generate-shot-list/generator/context-builder.js.map +1 -1
  22. package/cli/dist/commands/generate-shot-list/generator/index.d.ts +28 -0
  23. package/cli/dist/commands/generate-shot-list/generator/index.d.ts.map +1 -1
  24. package/cli/dist/commands/generate-shot-list/generator/index.js +213 -38
  25. package/cli/dist/commands/generate-shot-list/generator/index.js.map +1 -1
  26. package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.d.ts.map +1 -1
  27. package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js +1 -0
  28. package/cli/dist/commands/generate-shot-list/generator/metadata-extractor.js.map +1 -1
  29. package/cli/dist/commands/generate-shot-list/generator/types.d.ts +10 -3
  30. package/cli/dist/commands/generate-shot-list/generator/types.d.ts.map +1 -1
  31. package/cli/dist/commands/generate-shot-list/schema/shot-list.schema.json +341 -0
  32. package/cli/dist/commands/generate-shot-list/schema/validator.d.ts +55 -0
  33. package/cli/dist/commands/generate-shot-list/schema/validator.d.ts.map +1 -0
  34. package/cli/dist/commands/generate-shot-list/schema/validator.js +180 -0
  35. package/cli/dist/commands/generate-shot-list/schema/validator.js.map +1 -0
  36. package/cli/dist/commands/generate-shot-list.d.ts.map +1 -1
  37. package/cli/dist/commands/generate-shot-list.js +35 -24
  38. package/cli/dist/commands/generate-shot-list.js.map +1 -1
  39. package/cli/dist/commands/gui.d.ts.map +1 -1
  40. package/cli/dist/commands/gui.js +28 -9
  41. package/cli/dist/commands/gui.js.map +1 -1
  42. package/package.json +2 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Reusable augmentation modules for Augment Code AI - Beyond the 49,400 character limit.**
4
4
 
5
- [![Version](https://img.shields.io/badge/version-1.6.1-blue.svg)](https://github.com/mytech-today-now/augment-extensions)
5
+ [![Version](https://img.shields.io/badge/version-2.3.1-blue.svg)](https://github.com/mytech-today-now/augment-extensions)
6
6
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
7
7
  [![npm](https://img.shields.io/badge/npm-%40mytechtoday%2Faugment--extensions-red.svg)](https://www.npmjs.com/package/@mytechtoday/augment-extensions)
8
8
  [![CI](https://github.com/mytech-today-now/augment-extensions/actions/workflows/ci.yml/badge.svg)](https://github.com/mytech-today-now/augment-extensions/actions/workflows/ci.yml)
@@ -14,17 +14,76 @@ Augment Extensions is a modular repository system that extends Augment Code AI's
14
14
 
15
15
  Augment Code AI limits the `.augment/` folder to ~49,400 characters. This repository provides:
16
16
 
17
- - **1.7M+ characters** of comprehensive guidelines across 20+ modules
17
+ - **2.3M+ characters** of comprehensive guidelines across 22+ modules
18
18
  - **Coding standards** for 8 languages/frameworks (HTML, CSS, JS, TypeScript, Python, React, PHP)
19
19
  - **Domain-specific rules** (WordPress, API design, security, databases, MCP)
20
+ - **Writing standards** (Screenplay with 17 cinematic styles, Shakespeare)
20
21
  - **Workflow integrations** (OpenSpec, Beads)
21
22
  - **Extensive examples** (Gutenberg blocks, REST API, WooCommerce, design patterns)
22
23
  - **Versioned updates** that propagate to consuming projects
23
24
  - **Project-agnostic modules** that work across different codebases
24
25
 
25
- ## ✨ What's New in v1.6.1
26
-
27
- ### Content Updates & Task Completion 📝
26
+ ## ✨ What's New in v2.3.1
27
+
28
+ ### Shot List Generator - Quality Improvements 🎬✨
29
+
30
+ **Critical Quality Fixes:**
31
+ Three major improvements to shot list output quality for high-end video generation:
32
+
33
+ 1. ✅ **Duration Formatting Bug Fixed** - Eliminated floating-point artifacts
34
+ - Before: `2.000000004s` or `0:7.4`
35
+ - After: `2s` or `0:07` (clean MM:SS format)
36
+ - Added `Math.round()` to all duration calculations
37
+
38
+ 2. ✅ **ANSI Color Code Removal** - Clean file output
39
+ - Before: `[32m713[39m / 4000` (terminal colors in files)
40
+ - After: `713 / 4000` (clean text)
41
+ - Removed Chalk color wrapping from Markdown/JSON/JSONL output
42
+
43
+ 3. ✅ **Massively Enhanced Description Verbosity** - 10x increase for generative AI
44
+ - Before: Average 375 characters per shot
45
+ - After: Average **3,571 characters** per shot (3000-4000 target range)
46
+ - Total output: **124,983 characters** (was 13,122)
47
+ - Enhanced context descriptions (1000+ chars): Spatial composition, lighting design, atmospheric quality
48
+ - Enhanced character descriptions (500-800 chars each): Physical appearance, wardrobe details, emotional state, body language
49
+ - Improved Character Bible extraction: Captures multiple sentences for verbose descriptions
50
+ - Production-ready for high-end video generation AI (Runway, Pika, Sora, etc.)
51
+
52
+ **Impact:**
53
+ - 🎯 **Perfect for Generative AI** - Extremely detailed descriptions provide sufficient context for video generation models
54
+ - 🎨 **Cinematic Detail** - Includes lighting, atmosphere, spatial composition, fabric textures, emotional nuance
55
+ - 📊 **Consistent Quality** - Character Bible and Set Bible maintain continuity across all shots
56
+ - ✅ **Clean Output** - No formatting artifacts, ready for production pipelines
57
+
58
+ ## ✨ What's New in v2.3.0
59
+
60
+ ### Shot List Generator Refactor - Production Ready 🎬
61
+
62
+ **Major Refactor Complete (AUGX-SHOT-GEN-001):**
63
+ All 12 requirements implemented for production-ready shot list generation:
64
+
65
+ 1. ✅ **Default Output Behavior** - Auto-generates `<input>-ai-shot-list.<ext>` when `--output` not provided
66
+ 2. ✅ **Intelligent Shot Splitting** - Automatically splits shots exceeding max duration into sub-shots (3a, 3b, 3c)
67
+ 3. ✅ **Duration Formatting** - Clean MM:SS format for all durations (no decimals)
68
+ 4. ✅ **Terminal Feedback Severity** - Color-coded warnings (red errors, yellow warnings)
69
+ 5. ✅ **Visual Style Property** - Reality/Animation/CGI/Hybrid classification per shot
70
+ 6. ✅ **Simplified Character Count** - Clean `C: #### / 4000` format with color indicators
71
+ 7. ✅ **No-Dialogue Shots** - Explicit "No dialogue in this shot" in descriptions
72
+ 8. ✅ **Mandatory Dialogue Property** - MPAA-style screenplay format or "No dialogue in this shot"
73
+ 9. ✅ **Character Blocking Continuity** - Tracks positions/wardrobe/appearance across shots
74
+ 10. ✅ **Rich Character Descriptions** - Character Bible with complete wardrobe/appearance/props/emotion
75
+ 11. ✅ **Rich Set Descriptions** - Set Bible with environment/lighting/atmosphere/weather/timeOfDay
76
+ 12. ✅ **JSON/JSONL Format Corrections** - Valid JSON with all fields, JSONL one shot per line
77
+
78
+ **Key Features:**
79
+ - 🎭 **Character Bible System** - Maintains consistent character descriptions across all shots
80
+ - 🎬 **Set Bible System** - Maintains consistent set/location descriptions across all shots
81
+ - 📐 **Blocking Continuity** - Tracks character positions and spatial relationships
82
+ - 🎨 **Visual Style Detection** - Automatically determines Reality/Animation/CGI/Hybrid
83
+ - 📊 **Production-Ready Output** - Suitable for downstream video generation AI
84
+ - ✅ **Validated JSON/JSONL** - Properly structured output for automated processing
85
+
86
+ ### Previous Updates (v1.6.1)
28
87
 
29
88
  **Shakespeare Module Enhancements:**
30
89
  - ✅ **Comedy Scene Examples** - Added 2 comprehensive scene examples:
@@ -459,7 +518,7 @@ See [.augment/mcp/README.md](./.augment/mcp/README.md) for detailed MCP integrat
459
518
 
460
519
  ```
461
520
  augment-extensions/
462
- ├── augment-extensions/ # Extension modules (1.7M+ characters)
521
+ ├── augment-extensions/ # Extension modules (2.3M+ characters)
463
522
  │ ├── coding-standards/ # Language/framework standards (8 modules)
464
523
  │ │ ├── html/ # HTML standards (32K chars)
465
524
  │ │ ├── css/ # CSS standards (30K chars)
@@ -478,6 +537,21 @@ augment-extensions/
478
537
  │ │ ├── security/ # OWASP security guidelines (38K chars)
479
538
  │ │ ├── wordpress/ # WordPress development (general)
480
539
  │ │ └── wordpress-plugin/ # WordPress plugin development (344K chars)
540
+ │ ├── writing-standards/ # Writing standards (2 modules, 583K chars) ✨ NEW
541
+ │ │ ├── screenplay/ # Screenplay writing (163.5K chars)
542
+ │ │ │ ├── cinematic-styles/ # 17 cinematic style guides (257K chars)
543
+ │ │ │ │ ├── directors/ # 11 auteur directors (Nolan, Tarantino, Lynch, etc.)
544
+ │ │ │ │ ├── franchises/ # Star Wars, MCU/Avengers
545
+ │ │ │ │ ├── films/ # Blue Ruin (indie filmmaking)
546
+ │ │ │ │ ├── comedy-formats/ # Monty Python, Saturday Night Live
547
+ │ │ │ │ └── narrative-theory/ # Joseph Campbell (Hero's Journey)
548
+ │ │ │ ├── genres/ # Genre conventions
549
+ │ │ │ ├── styles/ # Narrative styles (linear, non-linear, etc.)
550
+ │ │ │ └── themes/ # Thematic integration
551
+ │ │ └── literature/ # Literature writing standards
552
+ │ │ └── shakespeare/ # Shakespeare writing (419.7K chars)
553
+ │ │ ├── rules/ # Poetry, drama, language, character & themes
554
+ │ │ └── examples/ # Annotated sonnets, scene examples, exercises
481
555
  │ ├── workflows/ # Workflow integrations (2 modules)
482
556
  │ │ ├── openspec/ # Spec-driven development (32K chars)
483
557
  │ │ └── beads/ # Git-backed issue tracking (39K chars)
@@ -752,12 +826,41 @@ augx use coding-standards/typescript --version 1.0.0 --pin
752
826
  - **[WooCommerce Extension](./augment-extensions/examples/woocommerce-extension/)** (v1.0.0, ~24K chars)
753
827
  - Product customizer with custom fields, checkout customization
754
828
 
829
+ ### Writing Standards (2 modules, ~583K chars)
830
+
831
+ - **[Screenplay Writing Standards](./augment-extensions/writing-standards/screenplay/)** (v1.0.0, ~163.5K chars)
832
+ - **Industry-Standard Formatting** - AMPAS Nicholl Fellowship formatting standards
833
+ - **Narrative Frameworks** - Syd Field, Blake Snyder, Joseph Campbell structures
834
+ - **8 Screenplay Categories** - Hollywood, indie, TV, web, news, commercials, streaming, live TV
835
+ - **Character Development** - Programmatic character arcs, traits, motivations
836
+ - **Dialogue Mastery** - Natural speech, subtext, character voice
837
+ - **Screen Continuity** - Visual consistency rules (180-degree rule, match cuts)
838
+ - **Fountain Format** - Industry-standard plain-text screenplay markup
839
+ - **Cinematic Styles** (257K chars) - 17 comprehensive style guides:
840
+ - **11 Auteur Directors** - Christopher Nolan, Quentin Tarantino, Coen Brothers, David Lynch, Denis Villeneuve, Martin Scorsese, Steven Spielberg, Stanley Kubrick, Wes Anderson, Francis Ford Coppola, George Lucas
841
+ - **2 Franchises** - Star Wars, MCU/Avengers
842
+ - **1 Film** - Blue Ruin (indie filmmaking)
843
+ - **2 Comedy Formats** - Monty Python, Saturday Night Live
844
+ - **1 Narrative Theory** - Joseph Campbell (Hero's Journey)
845
+ - **VS Code Integration** - Better Fountain extension support
846
+ - **Export Tools** - Final Draft (.fdx), PDF, HTML export
847
+
848
+ - **[Shakespeare Writing Standards](./augment-extensions/writing-standards/literature/shakespeare/)** (v1.0.0, ~419.7K chars)
849
+ - **Poetry** - Sonnets, narrative poetry, verse forms, iambic pentameter
850
+ - **Drama** - Tragedy, comedy, history plays, scene construction
851
+ - **Language** - Elizabethan English, rhetoric & wordplay, vocabulary guide
852
+ - **Character & Themes** - Character development, thematic elements
853
+ - **Annotated Examples** - Sonnets, scene examples, exercises
854
+ - **Comedy Scene Examples** - Much Ado About Nothing Act 2 Scene 3 (497 lines), Twelfth Night Act 2 Scene 5 (654 lines)
855
+ - **Comprehensive Coverage** - 33 files, 10,000+ lines, complete guide to Shakespearean writing
856
+
755
857
  ### Statistics
756
858
 
757
- - **Total Modules**: 20 (8 coding standards, 6 domain rules, 2 workflows, 4 examples)
758
- - **Total Character Count**: ~1,774,692 (1.7M+ characters)
859
+ - **Total Modules**: 22 (8 coding standards, 6 domain rules, 2 workflows, 4 examples, 2 writing standards)
860
+ - **Total Character Count**: ~2,357,692 (2.3M+ characters)
759
861
  - **Languages Covered**: HTML, CSS, JavaScript, TypeScript, Python, React, PHP
760
862
  - **Domains Covered**: APIs, Databases, MCP, Security, WordPress
863
+ - **Writing Formats**: Screenplay (Fountain), Shakespearean Literature
761
864
 
762
865
  See [MODULES.md](./MODULES.md) for detailed module documentation.
763
866
 
@@ -930,6 +1033,43 @@ augx link domain-rules/security
930
1033
  augx link workflows/openspec
931
1034
  ```
932
1035
 
1036
+ ### Example 6: Screenplay Writing with Cinematic Styles
1037
+
1038
+ ```bash
1039
+ # Link screenplay writing standards
1040
+ augx link writing-standards/screenplay
1041
+
1042
+ # Generate shot list with cinematic style
1043
+ augx generate-shot-list --path my-screenplay.fountain --style christopher-nolan
1044
+
1045
+ # Generate shot list with multiple styles (priority-based merging)
1046
+ augx generate-shot-list --path my-screenplay.fountain \
1047
+ --style christopher-nolan \
1048
+ --style denis-villeneuve
1049
+
1050
+ # View available cinematic styles
1051
+ augx show writing-standards/screenplay
1052
+
1053
+ # Search for specific director styles
1054
+ augx search "quentin tarantino"
1055
+ augx search "wes anderson"
1056
+ ```
1057
+
1058
+ ### Example 7: Shakespearean Writing
1059
+
1060
+ ```bash
1061
+ # Link Shakespeare writing standards
1062
+ augx link writing-standards/literature/shakespeare
1063
+
1064
+ # View Shakespeare module content
1065
+ augx show shakespeare
1066
+
1067
+ # Search for specific topics
1068
+ augx search "iambic pentameter"
1069
+ augx search "comedy techniques"
1070
+ augx search "sonnets"
1071
+ ```
1072
+
933
1073
  ## 🔄 Update Propagation
934
1074
 
935
1075
  When module maintainers release updates:
@@ -1085,11 +1225,12 @@ augx search "REST API"
1085
1225
 
1086
1226
  ### Comprehensive Coverage
1087
1227
 
1088
- - **1.7M+ characters** of guidelines across 20+ modules
1228
+ - **2.3M+ characters** of guidelines across 22+ modules
1089
1229
  - **8 programming languages/frameworks** - HTML, CSS, JavaScript, TypeScript, Python, React, PHP
1090
1230
  - **6 domain-specific areas** - APIs, Databases, MCP, Security, WordPress
1091
1231
  - **2 workflow systems** - OpenSpec (spec-driven development), Beads (issue tracking)
1092
1232
  - **4 example modules** - Design patterns, Gutenberg blocks, REST API, WooCommerce
1233
+ - **2 writing standards** - Screenplay (with 17 cinematic styles), Shakespeare
1093
1234
 
1094
1235
  ### Model Context Protocol (MCP) - 219K chars ✨ NEW
1095
1236
 
@@ -1171,8 +1312,9 @@ MIT License - See [LICENSE](./LICENSE) for details.
1171
1312
  | **Domain Rules** | 6 | ~1,085,000 | APIs, Databases, MCP, Security, WordPress |
1172
1313
  | **Workflows** | 2 | ~71,000 | OpenSpec, Beads |
1173
1314
  | **Examples** | 4 | ~122,000 | Design Patterns, Gutenberg, REST API, WooCommerce |
1315
+ | **Writing Standards** | 2 | ~583,000 | Screenplay (Cinematic Styles), Shakespeare |
1174
1316
  | **Collections** | 1 | ~164,000 | HTML/CSS/JS Bundle |
1175
- | **TOTAL** | **20** | **~1,774,000** | **1.7M+ characters** |
1317
+ | **TOTAL** | **22** | **~2,357,000** | **2.3M+ characters** |
1176
1318
 
1177
1319
  ## 🔗 Links
1178
1320
 
@@ -1183,7 +1325,7 @@ MIT License - See [LICENSE](./LICENSE) for details.
1183
1325
 
1184
1326
  ---
1185
1327
 
1186
- **Status**: Active Development | **Version**: 1.4.0 | **Maintainer**: @mytech-today-now
1328
+ **Status**: Active Development | **Version**: 2.3.0 | **Maintainer**: @mytech-today-now
1187
1329
 
1188
- **Latest Release**: CLI Expansion Complete (Phase 3 & 4) - Full Beads, OpenSpec, and Collection integration with comprehensive task management, spec-driven development, quality tools, and enhanced documentation generation.
1330
+ **Latest Release**: Shot List Generator Refactor Complete (AUGX-SHOT-GEN-001) - Production-ready shot list generation with Character/Set Bibles, intelligent shot splitting, blocking continuity, visual style detection, and validated JSON/JSONL output for downstream video generation AI.
1189
1331
 
@@ -0,0 +1,173 @@
1
+ # Perl Coding Standard
2
+
3
+ This document defines the coding standards for all Perl code in projects using augment-extensions. The goal is to ensure consistency, readability, maintainability, security, and performance across Perl 5.20+ codebases (preferably 5.36+ for modern features).
4
+
5
+ These guidelines build on core Perl community recommendations:
6
+ - `perlstyle` (core Perl style guide)
7
+ - Perl Best Practices (Damian Conway, O'Reilly 2005 — still highly relevant)
8
+ - Modern Perl (4th edition practices)
9
+ - Perltidy defaults with overrides for team consistency
10
+
11
+ All Perl code **must** pass strict and warnings, and should use modern features where they improve clarity and safety.
12
+
13
+ ## 1. File Naming and Organization
14
+
15
+ - Use lowercase_with_underscores.pl for scripts.
16
+ - Use CamelCase.pm for modules / classes (but prefer lowercase_with_underscores.pm for utility modules when not object-oriented).
17
+ - Main application entry point: `app.pl` or `scriptname.pl`.
18
+ - Tests: `t/001_basic.t`, `t/foo-bar.t` (use descriptive names).
19
+ - Configuration files: `.pl`, `.conf`, or `.ini` (avoid `.pm` unless it's a config module).
20
+ - Organize large projects with `lib/`, `bin/`, `t/`, `script/`, `share/`.
21
+
22
+ **Must** place `use strict;` and `use warnings;` (or `use v5.36;` which implies them) at the top of every file.
23
+
24
+ ```perl
25
+ use v5.36; # Enables strict, warnings, signatures, etc.
26
+ ```
27
+
28
+ ## 2. Indentation and Whitespace
29
+
30
+ Use 4 spaces for indentation (no tabs).
31
+ Use perltidy with project .perltidyrc for automatic formatting:
32
+ -i=4 -et=4 -l=100 -ce -bar -bbb -bbc -bbs
33
+
34
+ Align fat commas (=>) where reasonable.
35
+
36
+ Keep lines ≤ 100 characters (soft limit 120).
37
+ One true brace style (K&R / OTBS): opening brace on same line as control structure.
38
+
39
+ Blank lines:
40
+ 1 between logical blocks inside subroutines.
41
+ 2 between subroutines.
42
+
43
+ Avoid trailing whitespace.
44
+
45
+
46
+ Example:
47
+ ```perl
48
+ sub process_data ($data) {
49
+ my $result = {};
50
+
51
+ if ($data->{enabled}) {
52
+ $result->{status} = 'active';
53
+ }
54
+ else {
55
+ $result->{status} = 'inactive';
56
+ }
57
+
58
+ return $result;
59
+ }
60
+ ```
61
+
62
+ ## 3. Naming Conventions
63
+
64
+ Variables: $snake_case (lowercase with underscores).
65
+ Constants: UPPER_CASE.
66
+ Subroutines: snake_case().
67
+ Packages/Modules: CamelCase for OO / distributions, lowercase::with::namespaces otherwise.
68
+ Filehandles: $fh or $IN_FH, $OUT_FH.
69
+ Package variables: avoid globals; prefer our or state when needed.
70
+ Avoid single-letter variables except for obvious loop counters ($i, $j) or throwaways ($_).
71
+
72
+ Prefer lexical variables (my, our, state) over local or package globals.
73
+ Avoid $a, $b outside sort blocks.
74
+
75
+ ## 4. Comments and Documentation
76
+
77
+ Use POD for module/user documentation.
78
+ Inline comments for non-obvious logic only.
79
+ Use # for comments, aligned when possible.
80
+ Document all subs with purpose, params, returns using simple POD or plain comments.
81
+ For complex regexes, use /xms and comment each line.
82
+
83
+ Example:
84
+ ```perl
85
+
86
+ # Parse ISO date with named captures
87
+ if ($input =~ m{
88
+ ^ (?<year> \d{4} ) -
89
+ (?<month> \d{2} ) -
90
+ (?<day> \d{2} ) $
91
+ }xms) {
92
+ # ...
93
+ }
94
+ ```
95
+
96
+ ## 5. Language Features and Best Practices
97
+
98
+ Alwaysuse v5.36; (or at minimum use 5.20;) for signatures, postderef, etc.
99
+ Use subroutine signatures (sub foo ($bar, $baz) { ... }).
100
+ Prefer say over print when no newline is unwanted.
101
+ Use // (defined-or) and //= over || for defaults unless undef is meaningful.
102
+ List assignment and slices for clarity:
103
+
104
+ ```perl
105
+ my ($host, $port) = @config{qw(host port)};
106
+ ```
107
+
108
+ Use Carp instead of die in libraries (croak, confess).
109
+ Prefer exceptions over return undef for error handling.
110
+ Use Try::Tiny or core try/catch (v5.36+) for exception handling.
111
+
112
+ ```perl
113
+ use Try::Tiny;
114
+
115
+ try {
116
+ dangerous_operation();
117
+ }
118
+ catch {
119
+ croak "Failed: $_";
120
+ };
121
+ ```
122
+
123
+ ## 6. Control Structures
124
+
125
+ Prefer postfix conditionals for simple guards:
126
+
127
+ ```perl
128
+ return if !$condition;
129
+ ```
130
+
131
+ Use for instead of foreach (they are synonyms, but for is idiomatic).
132
+ Avoid C-style for (;;) unless performance-critical.
133
+ Use given/when sparingly (deprecated in future Perl); prefer if/elsif/else.
134
+
135
+ ## 7. Regular Expressions
136
+
137
+ Always use /xms flags for complex regexes.
138
+ Use named captures ((?<name>...)) over numbered.
139
+ Prefer qr// for building regexes.
140
+ Quote regex metacharacters when interpolating user input (quotemeta).
141
+
142
+ ## 8. Error Handling and Security
143
+
144
+ Check return values of system calls (open, sysread, chdir, etc.).
145
+ Use IPC::System::Simple or capture output safely.
146
+ Taint mode (-T) for CGI / untrusted input scripts.
147
+ Use Hash::Util to lock hashes where appropriate.
148
+ Avoid system(@args) with interpolation; prefer list form.
149
+
150
+ ## 9. Testing
151
+
152
+ Use Test2::V0 or Test::More + Test2::Suite.
153
+ Write tests first when feasible (TDD encouraged).
154
+ Aim for >80% coverage on business logic.
155
+ Use done_testing() instead of plan count.
156
+
157
+ ## 10. Performance and Modernization
158
+
159
+ Profile before optimizing (Devel::NYTProf).
160
+ Prefer arrayrefs over arrays for large data.
161
+ Use Moo / Moose / Mojo::Base for OO (project choice).
162
+ Avoid source filters.
163
+ Use feature qw( postderef signatures ) if not using v5.36.
164
+
165
+ ## Tooling
166
+
167
+ Run perltidy -b before commit.
168
+ Use perlcritic with severity 3+ (custom .perlcriticrc recommended).
169
+ Enforce via pre-commit hooks or CI.
170
+
171
+ Follow these guidelines unless a deliberate, documented exception exists. Consistency across the codebase takes precedence over individual preferences.
172
+
173
+ This new Perl standard mirrors the structure, prescriptive tone, code examples, and depth seen in the repo's other language standards (e.g., Python's emphasis on modern features/type hints, PHP's PSR adherence with extensions). Place it in `augment-extensions/coding-standards/perl/README.md` (or similar) to match the pattern. If you need adjustments or more sections, let me know!
@@ -1 +1 @@
1
- {"version":3,"file":"base-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/base-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aA0B3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WAwBzB,CAAC;AAEF;;GAEG;AACH,8BAAsB,aAAc,YAAW,SAAS;IACtD,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IACvE,QAAQ,CAAC,YAAY,IAAI,MAAM;IAC/B,QAAQ,CAAC,WAAW,IAAI,MAAM;IAE9B;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI7C;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAItD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAIxE;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAOzD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAKrD;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;CAI3D"}
1
+ {"version":3,"file":"base-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/base-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aA4B3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WAwBzB,CAAC;AAEF;;GAEG;AACH,8BAAsB,aAAc,YAAW,SAAS;IACtD,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IACvE,QAAQ,CAAC,YAAY,IAAI,MAAM;IAC/B,QAAQ,CAAC,WAAW,IAAI,MAAM;IAE9B;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI7C;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAItD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAIxE;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAOzD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAKrD;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;CAI3D"}
@@ -14,17 +14,19 @@ exports.timeFormatter = {
14
14
  * Format seconds to MM:SS
15
15
  */
16
16
  formatTime(seconds) {
17
- const mins = Math.floor(seconds / 60);
18
- const secs = seconds % 60;
17
+ const roundedSeconds = Math.round(seconds);
18
+ const mins = Math.floor(roundedSeconds / 60);
19
+ const secs = roundedSeconds % 60;
19
20
  return `${mins}:${secs.toString().padStart(2, '0')}`;
20
21
  },
21
22
  /**
22
23
  * Format total duration to human-readable format
23
24
  */
24
25
  formatDuration(totalSeconds) {
25
- const hours = Math.floor(totalSeconds / 3600);
26
- const mins = Math.floor((totalSeconds % 3600) / 60);
27
- const secs = totalSeconds % 60;
26
+ const roundedSeconds = Math.round(totalSeconds);
27
+ const hours = Math.floor(roundedSeconds / 3600);
28
+ const mins = Math.floor((roundedSeconds % 3600) / 60);
29
+ const secs = roundedSeconds % 60;
28
30
  if (hours > 0) {
29
31
  return `${hours}h ${mins}m ${secs}s`;
30
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/base-formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/base-formatter.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ export declare class JSONFormatter extends BaseFormatter {
16
16
  format(shotList: ShotList, options?: FormatterOptions): string;
17
17
  /**
18
18
  * Format individual shot for JSON
19
+ * Requirement 12: Include all fields from Shot interface
19
20
  */
20
21
  private formatShot;
21
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"json-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAmC9D;;OAEG;IACH,OAAO,CAAC,UAAU;IA8ClB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
1
+ {"version":3,"file":"json-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAmC9D;;;OAGG;IACH,OAAO,CAAC,UAAU;IAmDlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
@@ -49,6 +49,7 @@ class JSONFormatter extends base_formatter_1.BaseFormatter {
49
49
  }
50
50
  /**
51
51
  * Format individual shot for JSON
52
+ * Requirement 12: Include all fields from Shot interface
52
53
  */
53
54
  formatShot(shot, options) {
54
55
  const includeWarnings = options?.includeWarnings !== false;
@@ -72,14 +73,19 @@ class JSONFormatter extends base_formatter_1.BaseFormatter {
72
73
  name: char.name,
73
74
  position: char.position,
74
75
  appearance: char.appearance,
76
+ wardrobe: char.wardrobe || null, // Requirement 10: Rich character descriptions
77
+ physicalAppearance: char.physicalAppearance || null, // Requirement 10: Rich character descriptions
75
78
  emotion: char.emotion || null,
76
79
  action: char.action || null
77
80
  })),
78
81
  description: shot.description,
82
+ dialogue: shot.dialogue, // Requirement 8 & 12: Mandatory dialogue property
79
83
  metadata: {
80
84
  shotType: shot.metadata.shotType,
81
85
  cameraMovement: shot.metadata.cameraMovement,
82
86
  framing: shot.metadata.framing,
87
+ visualStyle: shot.metadata.visualStyle, // Requirement 5 & 12: Visual style property
88
+ cinematicStyle: shot.metadata.cinematicStyle || null, // Requirement 12: Cinematic style
83
89
  technicalNotes: shot.metadata.technicalNotes || []
84
90
  },
85
91
  duration: {
@@ -1 +1 @@
1
- {"version":3,"file":"json-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/json-formatter.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare class JSONLFormatter extends BaseFormatter {
19
19
  format(shotList: ShotList, options?: FormatterOptions): string;
20
20
  /**
21
21
  * Format individual shot for JSONL
22
+ * Requirement 12: Include all fields from Shot interface
22
23
  */
23
24
  private formatShot;
24
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAY9D;;OAEG;IACH,OAAO,CAAC,UAAU;IA8ClB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
1
+ {"version":3,"file":"jsonl-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAiB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAY9D;;;OAGG;IACH,OAAO,CAAC,UAAU;IAmDlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
@@ -26,6 +26,7 @@ class JSONLFormatter extends base_formatter_1.BaseFormatter {
26
26
  }
27
27
  /**
28
28
  * Format individual shot for JSONL
29
+ * Requirement 12: Include all fields from Shot interface
29
30
  */
30
31
  formatShot(shot, options) {
31
32
  const includeWarnings = options?.includeWarnings !== false;
@@ -49,14 +50,19 @@ class JSONLFormatter extends base_formatter_1.BaseFormatter {
49
50
  name: char.name,
50
51
  position: char.position,
51
52
  appearance: char.appearance,
53
+ wardrobe: char.wardrobe || null, // Requirement 10: Rich character descriptions
54
+ physicalAppearance: char.physicalAppearance || null, // Requirement 10: Rich character descriptions
52
55
  emotion: char.emotion || null,
53
56
  action: char.action || null
54
57
  })),
55
58
  description: shot.description,
59
+ dialogue: shot.dialogue, // Requirement 8 & 12: Mandatory dialogue property
56
60
  metadata: {
57
61
  shotType: shot.metadata.shotType,
58
62
  cameraMovement: shot.metadata.cameraMovement,
59
63
  framing: shot.metadata.framing,
64
+ visualStyle: shot.metadata.visualStyle, // Requirement 5 & 12: Visual style property
65
+ cinematicStyle: shot.metadata.cinematicStyle || null, // Requirement 12: Cinematic style
60
66
  technicalNotes: shot.metadata.technicalNotes || []
61
67
  },
62
68
  duration: {
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonl-formatter.js","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/jsonl-formatter.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,20 @@ export declare class MarkdownFormatter extends BaseFormatter {
22
22
  * Get character count status indicator
23
23
  */
24
24
  private getCharacterStatus;
25
+ /**
26
+ * Get character count color function (Requirement 6)
27
+ * - Green if under 4000 characters
28
+ * - Yellow if between 4000 and 5000 characters
29
+ * - Red if over 5000 characters
30
+ */
31
+ private getCharacterCountColor;
32
+ /**
33
+ * Get duration severity color (Requirement 4)
34
+ * - Red for shots exceeding max duration (error)
35
+ * - Yellow for shots approaching max duration (warning)
36
+ * - Green for shots within acceptable range
37
+ */
38
+ private getDurationSeverityColor;
25
39
  /**
26
40
  * Get file extension
27
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/markdown-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAQ,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAyD9D;;OAEG;IACH,OAAO,CAAC,UAAU;IA0ElB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}
1
+ {"version":3,"file":"markdown-formatter.d.ts","sourceRoot":"","sources":["../../../../src/commands/generate-shot-list/formatter/markdown-formatter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAQ,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAyD9D;;OAEG;IACH,OAAO,CAAC,UAAU;IA+ElB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB"}