awesome-agv 3.1.0 โ†’ 3.3.0

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 CHANGED
@@ -38,8 +38,8 @@ For example, the principles of the [Rugged Software Constitution](.agents/rules/
38
38
  ### Key Features
39
39
 
40
40
  * ๐Ÿ“ **25 Rules** โ€” covering security, reliability, architecture, and maintainability. Distilled to project-specific decisions only โ€” rules encode *what overrides model defaults*, not what models already know.
41
- * ๐Ÿ› ๏ธ **57 Skills** โ€” specialized capabilities loaded on demand: language idioms, debugging, design, performance, CI/CD, and more.
42
- * ๐Ÿ”„ **12 Workflows** โ€” end-to-end development processes from research to ship.
41
+ * ๐Ÿ› ๏ธ **60 Skills** โ€” specialized capabilities loaded on demand: language idioms, debugging, design, testing, performance, CI/CD, and more.
42
+ * ๐Ÿ”„ **10 Workflows** โ€” end-to-end development processes from research to ship, plus specialized testing pipelines.
43
43
  * ๐Ÿค– **21 Agent Personas** โ€” specialized sub-agents for multi-agent orchestration arranged in a 4-tier hierarchy.
44
44
  * ๐Ÿ—๏ธ **Three-Tier Loading System** โ€” always-on mandates + contextual principles + on-demand skills for zero-noise enforcement.
45
45
 
@@ -299,7 +299,7 @@ Activated by the model only when relevant โ€” zero overhead when not applicable.
299
299
  * **[Accessibility Principles](.agents/rules/accessibility-principles.md)**: WCAG 2.1 AA, semantic HTML, keyboard navigation
300
300
  * **[Git Workflow Principles](.agents/rules/git-workflow-principles.md)**: Conventional commits, branch naming, PR hygiene
301
301
 
302
- ### Specialized Skills (57)
302
+ ### Specialized Skills (60)
303
303
 
304
304
  Skills are deep expertise modules loaded on demand โ€” agents only pay the token cost when the skill is relevant.
305
305
 
@@ -321,6 +321,10 @@ Skills are deep expertise modules loaded on demand โ€” agents only pay the token
321
321
  * **[CI/CD GitOps & Kubernetes](.agents/skills/ci-cd/references/gitops-kubernetes.md)**: ArgoCD, Kubernetes deployment patterns โ€” bundled with `ci-cd`
322
322
  * **[Feature Flags](.agents/skills/feature-flags/SKILL.md)**: Release flags, kill switches, experiment flags, lifecycle rules โ€” PRD-gated, loaded only when required
323
323
 
324
+ #### ๐Ÿงช Testing Skills
325
+ * **[Testing Strategy](.agents/skills/testing-strategy/SKILL.md)**: Test doubles strategy, integration test infrastructure (Testcontainers, Firebase emulator), naming conventions, test organization patterns
326
+ * **[Mobile Testing](.agents/skills/mobile-testing/SKILL.md)**: Mobile E2E testing patterns โ€” Flutter integration_test, Patrol, Maestro, golden testing, device matrix, and test data management
327
+
324
328
  #### ๐ŸŽจ Design & UI Skills
325
329
  * **[Frontend Design](.agents/skills/frontend-design/SKILL.md)**: Production-grade frontend interfaces, bold aesthetics, typography, motion
326
330
  * **[Mobile Design](.agents/skills/mobile-design/SKILL.md)**: Platform-native mobile interfaces for Flutter and React Native
@@ -334,7 +338,7 @@ Skills are deep expertise modules loaded on demand โ€” agents only pay the token
334
338
  * **[Audit Checklist](.agents/skills/audit-checklist/SKILL.md)**: Consolidated audit checklists for code review and verification โ€” loaded by `/audit` workflow and multi-agent review pipelines.
335
339
  * **[Acceptance Review](.agents/skills/acceptance-review/SKILL.md)**: Spec adherence and deliverable completeness verification โ€” ensures what was delivered matches what was requested.
336
340
 
337
- #### ๐ŸŒ Language & Framework Idioms (24)
341
+ #### ๐ŸŒ Language & Framework Idioms (26)
338
342
 
339
343
  Language-specific patterns, tooling, project layout, and quality commands. Each skill auto-loads via `paths:` triggers when the agent touches files in that language.
340
344
 
@@ -342,7 +346,7 @@ Language-specific patterns, tooling, project layout, and quality commands. Each
342
346
 
343
347
  | Skill | Ecosystem | Auto-loads on |
344
348
  |---|---|---|
345
- | [Go Idioms](.agents/skills/go-idioms/SKILL.md) + [layout](./agents/skills/go-idioms/references/project-structure.md) | Go stdlib, error wrapping, table-driven tests, gofumpt | `**/*.go`, `**/go.mod` |
349
+ | [Go Idioms](.agents/skills/go-idioms/SKILL.md) + [layout](.agents/skills/go-idioms/references/project-structure.md) | Go stdlib, error wrapping, table-driven tests, gofumpt | `**/*.go`, `**/go.mod` |
346
350
  | [TypeScript Idioms](.agents/skills/typescript-idioms/SKILL.md) + [layout](.agents/skills/typescript-idioms/references/project-structure.md) | Strict mode, type narrowing, Zod, vitest | `**/*.ts`, `**/*.tsx` |
347
351
  | [Vue Idioms](.agents/skills/vue-idioms/SKILL.md) + [layout](.agents/skills/vue-idioms/references/project-structure.md) | Vue 3 Composition API, Pinia (Setup Store), composables | `**/*.vue`, `**/store/**/*.ts`, `**/*.store.ts` |
348
352
  | [Flutter Idioms](.agents/skills/flutter-idioms/SKILL.md) + [layout](.agents/skills/flutter-idioms/references/project-structure.md) | Riverpod 3, freezed, go_router, const widgets | `**/*.dart`, `**/pubspec.yaml`, `**/analysis_options.yaml` |
@@ -353,20 +357,22 @@ Language-specific patterns, tooling, project layout, and quality commands. Each
353
357
 
354
358
  | Skill | Ecosystem |
355
359
  |---|---|
356
- | [Angular](.agents/skills/angular-idioms/SKILL.md) | Angular components, signals, DI, RxJS |
360
+ | [Angular](.agents/skills/angular-idioms/SKILL.md) + [layout](.agents/skills/angular-idioms/references/project-structure.md) | Angular components, signals, DI, RxJS |
361
+ | [Axum](.agents/skills/axum-idioms/SKILL.md) | Axum HTTP routing, extractors, Tower middleware |
357
362
  | [C++](.agents/skills/cpp-idioms/SKILL.md) | Modern C++ (RAII, smart pointers, CMake) |
358
363
  | [C#](.agents/skills/csharp-idioms/SKILL.md) | .NET, async/await, LINQ, records |
359
364
  | [Django](.agents/skills/django-idioms/SKILL.md) | Django ORM, views, middleware |
360
365
  | [.NET](.agents/skills/dotnet-idioms/SKILL.md) | ASP.NET Core, Entity Framework |
361
366
  | [Elixir](.agents/skills/elixir-idioms/SKILL.md) | OTP, GenServer, supervision trees |
367
+ | [Hono](.agents/skills/hono-idioms/SKILL.md) + [layout](.agents/skills/hono-idioms/references/project-structure.md) | Hono routing, middleware, Zod validation, RPC |
362
368
  | [Java](.agents/skills/java-idioms/SKILL.md) | Streams, records, sealed classes |
363
369
  | [JavaScript](.agents/skills/javascript-idioms/SKILL.md) | ES2024+, async patterns, ESM |
364
370
  | [Kotlin](.agents/skills/kotlin-idioms/SKILL.md) | Coroutines, sealed classes, Android |
365
371
  | [Laravel](.agents/skills/laravel-idioms/SKILL.md) | Eloquent, middleware, queues |
366
- | [Next.js](.agents/skills/nextjs-idioms/SKILL.md) | App Router, RSC, ISR |
372
+ | [Next.js](.agents/skills/nextjs-idioms/SKILL.md) + [layout](.agents/skills/nextjs-idioms/references/project-structure.md) | App Router, RSC, ISR |
367
373
  | [PHP](.agents/skills/php-idioms/SKILL.md) | PHP 8+, type declarations, Composer |
368
374
  | [Rails](.agents/skills/rails-idioms/SKILL.md) | ActiveRecord, conventions, RSpec |
369
- | [React](.agents/skills/react-idioms/SKILL.md) | Hooks, Suspense, Server Components |
375
+ | [React](.agents/skills/react-idioms/SKILL.md) + [layout](.agents/skills/react-idioms/references/project-structure.md) | Hooks, Suspense, Server Components |
370
376
  | [Ruby](.agents/skills/ruby-idioms/SKILL.md) | Blocks, modules, metaprogramming |
371
377
  | [Spring Boot](.agents/skills/spring-boot-idioms/SKILL.md) | Spring DI, JPA, WebFlux |
372
378
  | [SQL](.agents/skills/sql-idioms/SKILL.md) | Query optimization, indexes, migrations |
@@ -403,26 +409,21 @@ Agent personas are specialized sub-agents designed for multi-agent orchestration
403
409
 
404
410
  See the [workflow-team](.agents/workflows/workflow-team.md) workflow for the full dispatch protocol, including recursive parallel dispatch with MECE file ownership and DAG-based execution ordering.
405
411
 
406
- ### Development Workflows (12)
412
+ ### Development Workflows (10)
407
413
 
408
414
  The setup includes opinionated, end-to-end workflows that chain rules and skills into structured development processes.
409
415
 
410
416
  #### ๐Ÿญ Feature Workflow โ€” Single Agent (`/workflow-solo`)
411
417
 
412
- The primary workflow for a single agent executing all phases sequentially โ€” **no skipping**.
418
+ A lean, single-agent pipeline with adaptive complexity routing. The agent assesses task scope, risk, and knowledge to route into one of three tracks:
413
419
 
414
- ```
415
- Research โ†’ Implement (TDD) โ†’ Integrate โ†’ E2E (conditional) โ†’ Verify โ†’ Ship
416
- ```
420
+ | Track | When | Pipeline |
421
+ |-------|------|----------|
422
+ | **Light** | All dimensions Low (1โ€“3 files, no breaking changes) | IMPLEMENT โ†’ VERIFY โ†’ COMMIT |
423
+ | **Standard** | Any dimension Medium/High | RESEARCH โ†’ IMPLEMENT โ†’ VERIFY โ†’ COMMIT |
424
+ | **Thorough** | Multiple dimensions High | RESEARCH โ†’ IMPLEMENT โ†’ VERIFY (full) โ†’ COMMIT |
417
425
 
418
- | Phase | Phase File | Purpose |
419
- | ------------ | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
420
- | 1. Research | [`phase-research`](.agents/workflows/phase-research.md) | Understand context, search docs, create ADRs, uses [Qurio](https://github.com/irahardianto/qurio) default to web search |
421
- | 2. Implement | [`phase-implement`](.agents/workflows/phase-implement.md) | TDD cycle: Red โ†’ Green โ†’ Refactor |
422
- | 3. Integrate | [`phase-integrate`](.agents/workflows/phase-integrate.md) | Integration tests with Testcontainers |
423
- | 3.5. E2E | [`phase-e2e`](.agents/workflows/phase-e2e.md) | End-to-end validation with Playwright |
424
- | 4. Verify | [`phase-verify`](.agents/workflows/phase-verify.md) | Full lint, test, and build validation |
425
- | 5. Ship | [`phase-commit`](.agents/workflows/phase-commit.md) | Git commit with conventional format |
426
+ Each phase references existing rules and skills rather than restating content โ€” the workflow is 133 lines total. Subagent spawning is allowed but not prescribed.
426
427
 
427
428
  #### ๐Ÿค– Multi-Agent Orchestration (`/workflow-team`)
428
429
 
@@ -434,6 +435,17 @@ SCOUT โ†’ DESIGN โ†’ PRE-MORTEM โ†’ BUILD (parallel) โ†’ REVIEW (parallel) โ†’ R
434
435
 
435
436
  Includes 11 workflow templates (A-K) for common scenarios: full features, bug fixes, audits, mobile features, security hardening, infrastructure, documentation sprints, incident response, and technical debt.
436
437
 
438
+ #### ๐Ÿงช Testing Workflows
439
+
440
+ Specialized workflows for retroactive testing improvements on existing codebases:
441
+
442
+ | Workflow | Pipeline | Purpose |
443
+ |----------|----------|---------|
444
+ | [`/test-unit`](.agents/workflows/test-unit.md) | ANALYZE โ†’ PRIORITIZE โ†’ REFACTOR โ†’ TEST โ†’ VERIFY | Coverage-gap-first unit test improvement โ€” analyze gaps, prioritize by business risk and git churn, refactor for testability if needed |
445
+ | [`/test-integration`](.agents/workflows/test-integration.md) | AUDIT โ†’ INFRASTRUCTURE โ†’ TEST โ†’ VERIFY | Adapter audit โ€” scan for I/O boundaries, set up Testcontainers/mocks, write contract-compliance tests |
446
+ | [`/test-e2e`](.agents/workflows/test-e2e.md) | PLAN โ†’ SETUP โ†’ AUTHOR โ†’ EXECUTE โ†’ REPORT | Platform-adaptive E2E โ€” web (Playwright) + mobile (Flutter/Patrol/Maestro), journey-based with evidence capture |
447
+ | [`/test-scenarios`](.agents/workflows/test-scenarios.md) | INPUT โ†’ INVENTORY โ†’ ANALYZE โ†’ DERIVE โ†’ EXPAND โ†’ ORGANIZE โ†’ OUTPUT โ†’ HUMAN REVIEW | Hybrid structured derivation + mutation-informed expansion โ€” generates prioritized test scenarios that feed into the above workflows |
448
+
437
449
  #### ๐Ÿ”ง Specialized Workflows
438
450
 
439
451
  | Workflow | When to Use |
@@ -465,7 +477,7 @@ Includes 11 workflow templates (A-K) for common scenarios: full features, bug fi
465
477
  โ”‚ โ”œโ”€โ”€ architectural-pattern.md # always_on: I/O isolation, testability
466
478
  โ”‚ โ”œโ”€โ”€ rule-priority.md # always_on: conflict resolution
467
479
  โ”‚ โ””โ”€โ”€ ... # 5 more always-on + 15 contextual principles
468
- โ”œโ”€โ”€ skills/ # 57 specialized skills โ€” loaded on demand, not always
480
+ โ”œโ”€โ”€ skills/ # 60 specialized skills โ€” loaded on demand, not always
469
481
  โ”‚ โ”œโ”€โ”€ go-idioms/ # paths: **/*.go โ€” includes references/project-structure.md
470
482
  โ”‚ โ”œโ”€โ”€ typescript-idioms/ # paths: **/*.ts, **/*.tsx
471
483
  โ”‚ โ”œโ”€โ”€ vue-idioms/ # paths: **/*.vue, **/store/**/*.ts, **/*.store.ts
@@ -474,6 +486,9 @@ Includes 11 workflow templates (A-K) for common scenarios: full features, bug fi
474
486
  โ”‚ โ”œโ”€โ”€ python-idioms/ # paths: **/*.py, **/pyproject.toml
475
487
  โ”‚ โ”œโ”€โ”€ testability-patterns/ # reference-loaded from architectural-pattern.md
476
488
  โ”‚ โ”œโ”€โ”€ logging-implementation/ # reference-loaded from logging-and-observability-mandate.md
489
+ โ”‚ โ”œโ”€โ”€ testing-strategy/ # test doubles, naming, infrastructure patterns
490
+ โ”‚ โ”œโ”€โ”€ mobile-testing/ # Flutter integration_test, Patrol, Maestro, golden testing
491
+ โ”‚ โ”‚ โ””โ”€โ”€ references/ # flutter.md, maestro.md โ€” framework-specific details
477
492
  โ”‚ โ”œโ”€โ”€ ci-cd/ # paths: Dockerfile, .github/workflows/*, Jenkinsfile, ...
478
493
  โ”‚ โ”œโ”€โ”€ feature-flags/ # paths: feature*flag*, feature*toggle* (PRD-gated)
479
494
  โ”‚ โ”œโ”€โ”€ debugging-protocol/ # Core engineering (reference-loaded)
@@ -485,15 +500,13 @@ Includes 11 workflow templates (A-K) for common scenarios: full features, bug fi
485
500
  โ”‚ โ”œโ”€โ”€ java-idioms/
486
501
  โ”‚ โ”œโ”€โ”€ incident-response/ # Domain skills
487
502
  โ”‚ โ””โ”€โ”€ ...
488
- โ””โ”€โ”€ workflows/ # 12 development workflows
489
- โ”œโ”€โ”€ workflow-solo.md # Composite: single-agent feature workflow
490
- โ”œโ”€โ”€ workflow-team.md # Composite: multi-agent pipeline manager
491
- โ”œโ”€โ”€ phase-research.md # Phase: understand context
492
- โ”œโ”€โ”€ phase-implement.md # Phase: TDD cycle
493
- โ”œโ”€โ”€ phase-integrate.md # Phase: integration tests
494
- โ”œโ”€โ”€ phase-verify.md # Phase: full validation
495
- โ”œโ”€โ”€ phase-commit.md # Phase: git commit
496
- โ”œโ”€โ”€ phase-e2e.md # Phase: E2E testing
503
+ โ””โ”€โ”€ workflows/ # 10 development workflows
504
+ โ”œโ”€โ”€ workflow-solo.md # Single-agent: lean adaptive pipeline
505
+ โ”œโ”€โ”€ workflow-team.md # Multi-agent: hierarchical orchestration
506
+ โ”œโ”€โ”€ test-unit.md # Testing: unit test coverage improvement
507
+ โ”œโ”€โ”€ test-integration.md # Testing: integration test coverage
508
+ โ”œโ”€โ”€ test-e2e.md # Testing: E2E mobile & web
509
+ โ”œโ”€โ”€ test-scenarios.md # Testing: scenario generator
497
510
  โ”œโ”€โ”€ bugfix.md # Standalone: bug fixes
498
511
  โ”œโ”€โ”€ refactor.md # Standalone: code restructuring
499
512
  โ”œโ”€โ”€ audit.md # Standalone: code review
@@ -503,8 +516,8 @@ Includes 11 workflow templates (A-K) for common scenarios: full features, bug fi
503
516
  <!-- ROADMAP -->
504
517
  ## Roadmap
505
518
 
506
- - [x] Include more specialized skills to aid development process (57 skills shipped).
507
- - [x] Add development workflows for structured feature delivery (12 workflows shipped).
519
+ - [x] Include more specialized skills to aid development process (60 skills shipped).
520
+ - [x] Add development workflows for structured feature delivery (10 workflows shipped).
508
521
  - [x] Add language-specific idiom skills (Go, TypeScript, Vue, Flutter, Rust, Python + 18 community language skills).
509
522
  - [x] Create a CLI tool for easier installation (`npx awesome-agv`).
510
523
  - [x] Add multi-agent orchestration with 21 specialized agent personas in a 4-tier RMAS hierarchy.
@@ -526,7 +539,7 @@ Awesome AGV ships with **opinionated defaults** for specific technology stacks.
526
539
  | **Systems** | Rust โ€” tokio, thiserror/anyhow, clippy pedantic | [rust-idioms](.agents/skills/rust-idioms/SKILL.md) |
527
540
  | **Scripting/AI** | Python โ€” ruff, mypy strict, pytest, Pydantic | [python-idioms](.agents/skills/python-idioms/SKILL.md) |
528
541
 
529
- **Using a different framework?** The idiom skills are modular โ€” swap or edit them to match your stack. Community language skills are available for Angular, React, Next.js, Spring Boot, Django, Laravel, Rails, and more. See the [Adapting guide](https://irahardianto.github.io/awesome-agv/adapting) for which files to change.
542
+ **Using a different framework?** The idiom skills are modular โ€” swap or edit them to match your stack. Community language skills are available for Angular, React, Next.js, Hono, Axum, Spring Boot, Django, Laravel, Rails, and more. See the [Adapting guide](https://irahardianto.github.io/awesome-agv/adapting) for which files to change.
530
543
 
531
544
  ## Project Adaptation Guide
532
545
 
@@ -540,7 +553,7 @@ This setup supports different project structures:
540
553
  | **Microservices** | Adapt `project-structure.md` per service, add service mesh rules |
541
554
  | **Mobile (Flutter/RN)** | Use flutter-idioms or react-idioms skill |
542
555
 
543
- **To adapt:** Edit `project-structure.md`, the relevant idiom skill's `references/project-structure.md`, and `phase-verify.md` to match your project layout.
556
+ **To adapt:** Edit `project-structure.md` and the relevant idiom skill's `references/project-structure.md` to match your project layout.
544
557
 
545
558
  <!-- CONTRIBUTING -->
546
559
  ## Contributing
package/agv.config.json CHANGED
@@ -27,6 +27,7 @@
27
27
  "logging-implementation",
28
28
  "ml-engineering",
29
29
  "mobile-design",
30
+ "mobile-testing",
30
31
  "omni",
31
32
  "parallel-dispatch",
32
33
  "payment-integration",
@@ -176,6 +177,14 @@
176
177
  "detect": ["mix.exs"],
177
178
  "skills": ["elixir-idioms"]
178
179
  },
180
+ "hono": {
181
+ "label": "Hono",
182
+ "description": "Hono routing, middleware, Zod validation, RPC",
183
+ "group": "community",
184
+ "requires": ["typescript"],
185
+ "detect": [],
186
+ "skills": ["hono-idioms"]
187
+ },
179
188
  "java": {
180
189
  "label": "Java",
181
190
  "description": "streams, records, sealed classes",
@@ -694,6 +694,35 @@ function writeAgvrc(targetDir, mode, selectedStacks, deselected) {
694
694
  fs.writeFileSync(rcPath, JSON.stringify(config, null, 2) + '\n');
695
695
  }
696
696
 
697
+ // โ”€โ”€ Patch .gitignore โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
698
+ const AGENTWORK_ENTRY = '.agentwork/';
699
+
700
+ /**
701
+ * Ensures .agentwork/ is listed in .gitignore.
702
+ * Creates .gitignore if it doesn't exist.
703
+ * Returns: 'created' | 'patched' | 'already_present'
704
+ */
705
+ function patchGitignore(targetDir) {
706
+ const gitignorePath = path.join(targetDir, '.gitignore');
707
+
708
+ if (!fs.existsSync(gitignorePath)) {
709
+ fs.writeFileSync(gitignorePath, `${AGENTWORK_ENTRY}\n`, 'utf8');
710
+ return 'created';
711
+ }
712
+
713
+ const content = fs.readFileSync(gitignorePath, 'utf8');
714
+ const lines = content.split('\n').map((l) => l.trim());
715
+
716
+ if (lines.includes(AGENTWORK_ENTRY)) {
717
+ return 'already_present';
718
+ }
719
+
720
+ // Append with a preceding newline if the file doesn't end with one
721
+ const separator = content.endsWith('\n') ? '' : '\n';
722
+ fs.appendFileSync(gitignorePath, `${separator}${AGENTWORK_ENTRY}\n`, 'utf8');
723
+ return 'patched';
724
+ }
725
+
697
726
  // โ”€โ”€ Read existing .agvrc โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
698
727
  function readAgvrc(targetDir) {
699
728
  const rcPath = path.join(targetDir, AGENT_DIR, CONFIG_FILE);
@@ -760,7 +789,7 @@ function readManifest(tarballPath) {
760
789
  }
761
790
 
762
791
  // โ”€โ”€ Print Success Summary โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
763
- function printSuccess(targetDir, mode, selectedStacks) {
792
+ function printSuccess(targetDir, mode, selectedStacks, gitignoreResult) {
764
793
  const agentDir = path.join(targetDir, AGENT_DIR);
765
794
  const rulesDir = path.join(agentDir, 'rules');
766
795
  const skillsDir = path.join(agentDir, 'skills');
@@ -788,6 +817,16 @@ function printSuccess(targetDir, mode, selectedStacks) {
788
817
  ? `${icon.target} Curated`
789
818
  : `${icon.gear} Advanced`;
790
819
 
820
+ // Gitignore status message
821
+ let gitignoreMsg;
822
+ if (gitignoreResult === 'created') {
823
+ gitignoreMsg = `${icon.check} ${c.bold}.gitignore${c.reset} created with ${c.cyan}.agentwork/${c.reset} entry`;
824
+ } else if (gitignoreResult === 'patched') {
825
+ gitignoreMsg = `${icon.check} ${c.bold}.gitignore${c.reset} patched โ€” added ${c.cyan}.agentwork/${c.reset}`;
826
+ } else {
827
+ gitignoreMsg = `${icon.check} ${c.bold}.gitignore${c.reset} already contains ${c.cyan}.agentwork/${c.reset}`;
828
+ }
829
+
791
830
  console.log(`
792
831
  ${c.green}${c.bold} Installation complete! ${icon.rocket}${c.reset}
793
832
 
@@ -798,6 +837,8 @@ ${c.green}${c.bold} Installation complete! ${icon.rocket}${c.reset}
798
837
  ${icon.tool} ${c.bold}${skillsCount}${c.reset} Skills ${c.dim}Debugging, design, code review, language idioms${c.reset}
799
838
  ${icon.cycle} ${c.bold}${workflowsCount}${c.reset} Workflows ${c.dim}End-to-end dev processes${c.reset}
800
839
  ๐Ÿค– ${c.bold}${agentsCount}${c.reset} Agents ${c.dim}Specialized multi-agent personas${c.reset}
840
+
841
+ ${gitignoreMsg}
801
842
  `);
802
843
 
803
844
  if (selectedStacks && selectedStacks.size > 0) {
@@ -1005,8 +1046,11 @@ async function main() {
1005
1046
  // โ”€โ”€ Write .agvrc โ”€โ”€
1006
1047
  writeAgvrc(options.targetDir, mode, selectedStackKeys, deselected);
1007
1048
 
1049
+ // โ”€โ”€ Patch .gitignore โ”€โ”€
1050
+ const gitignoreResult = patchGitignore(options.targetDir);
1051
+
1008
1052
  // โ”€โ”€ Success โ”€โ”€
1009
- printSuccess(options.targetDir, mode, selectedStackKeys);
1053
+ printSuccess(options.targetDir, mode, selectedStackKeys, gitignoreResult);
1010
1054
  } catch (err) {
1011
1055
  console.error(`\n ${icon.error} ${c.red}Installation failed:${c.reset} ${err.message}\n`);
1012
1056
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "awesome-agv",
3
- "version": "3.1.0",
4
- "description": "Selective installer for Awesome AGV โ€” a rugged, high-quality AI Agent configuration suite with 25 rules, 57 skills, 12 workflows, and 21 agent personas.",
3
+ "version": "3.3.0",
4
+ "description": "Selective installer for Awesome AGV โ€” a rugged, high-quality AI Agent configuration suite with 25 rules, 59 skills, 12 workflows, and 21 agent personas.",
5
5
  "bin": {
6
6
  "awesome-agv": "./bin/awesome-agv.js"
7
7
  },