@orchestrator-claude/definitions 3.32.2 → 3.33.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.
Files changed (87) hide show
  1. package/README.md +113 -0
  2. package/agents/debug-sidecar.md +1 -1
  3. package/agents/doc-sidecar.md +1 -1
  4. package/agents/test-sidecar.md +1 -1
  5. package/dist/cli.js +78 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/DiffCommand.js +1 -1
  8. package/dist/commands/DiffCommand.js.map +1 -1
  9. package/dist/commands/InstallCommand.d.ts +41 -0
  10. package/dist/commands/InstallCommand.d.ts.map +1 -0
  11. package/dist/commands/InstallCommand.js +253 -0
  12. package/dist/commands/InstallCommand.js.map +1 -0
  13. package/dist/http/ApiClient.d.ts +5 -0
  14. package/dist/http/ApiClient.d.ts.map +1 -1
  15. package/dist/http/ApiClient.js.map +1 -1
  16. package/dist/install/DevCheckoutDetector.d.ts +66 -0
  17. package/dist/install/DevCheckoutDetector.d.ts.map +1 -0
  18. package/dist/install/DevCheckoutDetector.js +150 -0
  19. package/dist/install/DevCheckoutDetector.js.map +1 -0
  20. package/dist/install/HooksWirer.d.ts +29 -0
  21. package/dist/install/HooksWirer.d.ts.map +1 -0
  22. package/dist/install/HooksWirer.js +80 -0
  23. package/dist/install/HooksWirer.js.map +1 -0
  24. package/dist/install/LocalDiffReporter.d.ts +25 -0
  25. package/dist/install/LocalDiffReporter.d.ts.map +1 -0
  26. package/dist/install/LocalDiffReporter.js +50 -0
  27. package/dist/install/LocalDiffReporter.js.map +1 -0
  28. package/dist/install/Materializer.d.ts +67 -0
  29. package/dist/install/Materializer.d.ts.map +1 -0
  30. package/dist/install/Materializer.js +196 -0
  31. package/dist/install/Materializer.js.map +1 -0
  32. package/dist/install/McpRegistrar.d.ts +63 -0
  33. package/dist/install/McpRegistrar.d.ts.map +1 -0
  34. package/dist/install/McpRegistrar.js +114 -0
  35. package/dist/install/McpRegistrar.js.map +1 -0
  36. package/dist/install/ProcessRunner.d.ts +25 -0
  37. package/dist/install/ProcessRunner.d.ts.map +1 -0
  38. package/dist/install/ProcessRunner.js +41 -0
  39. package/dist/install/ProcessRunner.js.map +1 -0
  40. package/dist/install/ProjectSettingsNeutralizer.d.ts +39 -0
  41. package/dist/install/ProjectSettingsNeutralizer.d.ts.map +1 -0
  42. package/dist/install/ProjectSettingsNeutralizer.js +100 -0
  43. package/dist/install/ProjectSettingsNeutralizer.js.map +1 -0
  44. package/dist/install/types.d.ts +52 -0
  45. package/dist/install/types.d.ts.map +1 -0
  46. package/dist/install/types.js +8 -0
  47. package/dist/install/types.js.map +1 -0
  48. package/dist/manifest/ManifestLoader.d.ts.map +1 -1
  49. package/dist/manifest/ManifestLoader.js +3 -2
  50. package/dist/manifest/ManifestLoader.js.map +1 -1
  51. package/dist/manifest/types.d.ts +3 -0
  52. package/dist/manifest/types.d.ts.map +1 -1
  53. package/dist/scripts/bundle-hooks.d.ts +39 -0
  54. package/dist/scripts/bundle-hooks.d.ts.map +1 -0
  55. package/dist/scripts/bundle-hooks.js +165 -0
  56. package/dist/scripts/bundle-hooks.js.map +1 -0
  57. package/dist/scripts/generate-manifest.d.ts +22 -3
  58. package/dist/scripts/generate-manifest.d.ts.map +1 -1
  59. package/dist/scripts/generate-manifest.js +78 -35
  60. package/dist/scripts/generate-manifest.js.map +1 -1
  61. package/hooks/dangling-guard.mjs +7426 -0
  62. package/hooks/dangling-guard.ts +223 -6
  63. package/hooks/gate-guardian.mjs +463 -0
  64. package/hooks/lib/additional-directories-sync.ts +295 -0
  65. package/hooks/lib/api-client.ts +388 -7
  66. package/hooks/lib/session-selection.ts +81 -0
  67. package/hooks/mailbox-listener.mjs +259 -0
  68. package/hooks/post-compact.mjs +7931 -0
  69. package/hooks/post-implement.mjs +238 -0
  70. package/hooks/session-start.mjs +8234 -0
  71. package/hooks/session-start.ts +264 -23
  72. package/hooks/sprint-registry.mjs +59 -0
  73. package/hooks/subagent-start.mjs +289 -0
  74. package/hooks/subagent-stop.mjs +7793 -0
  75. package/hooks/subagent-stop.ts +4 -2
  76. package/hooks/user-prompt.mjs +329 -0
  77. package/hooks/workflow-guard.mjs +7805 -0
  78. package/hooks/workflow-guard.ts +360 -119
  79. package/hooks-settings-template.json +63 -0
  80. package/manifest.json +54 -68
  81. package/mcp-servers.json +48 -0
  82. package/package.json +10 -4
  83. package/personas/auditor-compliance.md +104 -0
  84. package/personas/cfo-conservador.md +88 -0
  85. package/personas/designer-perfeccionista.md +104 -0
  86. package/personas/diretor-cetico-fmcg.md +80 -0
  87. package/personas/engenheiro-cetico-construcao.md +107 -0
package/manifest.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema": "orchestrator-definitions/v1",
3
3
  "namespace": "orchestrator",
4
- "version": "3.32.2",
5
- "generatedAt": "2026-07-07T13:31:16.693Z",
4
+ "version": "3.33.0",
5
+ "generatedAt": "2026-07-19T21:23:40.109Z",
6
6
  "definitions": {
7
7
  "agents": [
8
8
  {
@@ -49,7 +49,7 @@
49
49
  "slug": "debug-sidecar",
50
50
  "file": "agents/debug-sidecar.md",
51
51
  "version": "1.0.0",
52
- "checksum": "sha256:38fddc0a95cbe7b28f78078ea47c570b2834c508a08fdf9ca56cd244b0d65ef9",
52
+ "checksum": "sha256:0ab774971d2fd9a88f1c8967aa82bfca37b54a71d61ef1457bb72d6bbf0f450f",
53
53
  "supersedes": null,
54
54
  "metadata": {}
55
55
  },
@@ -57,7 +57,7 @@
57
57
  "slug": "doc-sidecar",
58
58
  "file": "agents/doc-sidecar.md",
59
59
  "version": "1.0.0",
60
- "checksum": "sha256:8fc1312b077dfa82763809da7ad2b203918b575743510e6429989054627c6220",
60
+ "checksum": "sha256:81dd976d09484613a45f41be94bb769eec0eee07899f7bdec8ecf581d62e1a32",
61
61
  "supersedes": null,
62
62
  "metadata": {}
63
63
  },
@@ -177,7 +177,7 @@
177
177
  "slug": "test-sidecar",
178
178
  "file": "agents/test-sidecar.md",
179
179
  "version": "1.0.0",
180
- "checksum": "sha256:fc71cdcea6bd7f0dd10004d0f01de725c09873e784efbde5d2fb9a8fc9276663",
180
+ "checksum": "sha256:88063ef10a9bc5400cf06f2b7105f203b3b479ed7e631a0cb1d85aca12797247",
181
181
  "supersedes": null,
182
182
  "metadata": {}
183
183
  }
@@ -411,145 +411,131 @@
411
411
  "hooks": [
412
412
  {
413
413
  "slug": "dangling-guard",
414
- "file": "hooks/dangling-guard.ts",
414
+ "file": "hooks/dangling-guard.mjs",
415
415
  "version": "1.0.0",
416
- "checksum": "sha256:795ab6cb17039f6fd503d484a49a9bfe1b8a4b735098a9499bd679e534296da1",
416
+ "checksum": "sha256:0972d38c4d1a95108ad09c0c2b327bdac8160a2a345f815530a03cb516f8bdfe",
417
417
  "supersedes": null,
418
418
  "metadata": {}
419
419
  },
420
420
  {
421
421
  "slug": "gate-guardian",
422
- "file": "hooks/gate-guardian.ts",
422
+ "file": "hooks/gate-guardian.mjs",
423
423
  "version": "1.0.0",
424
- "checksum": "sha256:d4098999b3f4cf28f9bc309f6355a00aaa4d9df90b66c17ec32f27bd20d55bf9",
424
+ "checksum": "sha256:052b3e38eae63eb3cc520d6425e4e2ba08be4b200a20c4bbcd2deb3e4df7ed0c",
425
425
  "supersedes": null,
426
426
  "metadata": {}
427
427
  },
428
428
  {
429
- "slug": "api-client",
430
- "file": "hooks/lib/api-client.ts",
431
- "version": "1.0.0",
432
- "checksum": "sha256:fdac374cfabb58865d676e24157d15bc9d81cdabf62a5a6d28c66e9a95fdf69e",
433
- "supersedes": null,
434
- "metadata": {}
435
- },
436
- {
437
- "slug": "capability-scanner",
438
- "file": "hooks/lib/capability-scanner.ts",
439
- "version": "1.0.0",
440
- "checksum": "sha256:bc9ba2d57c7eba19967266cf42425b85b2f7076cf11795317e77206e902f50cc",
441
- "supersedes": null,
442
- "metadata": {}
443
- },
444
- {
445
- "slug": "finops-parser",
446
- "file": "hooks/lib/finops-parser.ts",
429
+ "slug": "mailbox-listener",
430
+ "file": "hooks/mailbox-listener.mjs",
447
431
  "version": "1.0.0",
448
- "checksum": "sha256:4acdcd904dd956c0375b11ebfbadca904b51635033c64d10f96f721235247c55",
432
+ "checksum": "sha256:525ea9522a5c3415994236f89ebce8b578dae94aea3bc710fb9466e77bf235a8",
449
433
  "supersedes": null,
450
434
  "metadata": {}
451
435
  },
452
436
  {
453
- "slug": "gate-logic",
454
- "file": "hooks/lib/gate-logic.ts",
437
+ "slug": "post-compact",
438
+ "file": "hooks/post-compact.mjs",
455
439
  "version": "1.0.0",
456
- "checksum": "sha256:d3fe80209e5a8267214c314ef7f6fad474764fddb9d398c660e33071ee604a7a",
440
+ "checksum": "sha256:06ba23353c8ce0afb1485e8465c455faa575523cd324237a5b3f564aca51a8cd",
457
441
  "supersedes": null,
458
442
  "metadata": {}
459
443
  },
460
444
  {
461
- "slug": "git-checkpoint",
462
- "file": "hooks/lib/git-checkpoint.ts",
445
+ "slug": "post-implement",
446
+ "file": "hooks/post-implement.mjs",
463
447
  "version": "1.0.0",
464
- "checksum": "sha256:e3947962bae3a58554a7a88cb2a432dba2fffc4d45131a2292f399f8a9decf8f",
448
+ "checksum": "sha256:6e72e8e41c5671b1767c5f78d4d3a8cfc07c54f0a72bc8272f0620f256bbafab",
465
449
  "supersedes": null,
466
450
  "metadata": {}
467
451
  },
468
452
  {
469
- "slug": "observations-helper",
470
- "file": "hooks/lib/observations-helper.ts",
453
+ "slug": "session-start",
454
+ "file": "hooks/session-start.mjs",
471
455
  "version": "1.0.0",
472
- "checksum": "sha256:4d3b9574eb10aaebafc1ddd6bf27bd9206b9abeae4828ac8d337722f230698b6",
456
+ "checksum": "sha256:5a7147a2b5a737ac1cd58b276bcdf4f4ceeb309e0858792d52c6cd596e753b0c",
473
457
  "supersedes": null,
474
458
  "metadata": {}
475
459
  },
476
460
  {
477
- "slug": "sprint-context",
478
- "file": "hooks/lib/sprint-context.ts",
461
+ "slug": "sprint-registry",
462
+ "file": "hooks/sprint-registry.mjs",
479
463
  "version": "1.0.0",
480
- "checksum": "sha256:fc681215c9a41615d8d902e0a39f18406d6e130780d7408ed264fbfc9eab8f1c",
464
+ "checksum": "sha256:f396c10a85a100daa1c23a412505253699bbb18de9f360abd6519d591e46af54",
481
465
  "supersedes": null,
482
466
  "metadata": {}
483
467
  },
484
468
  {
485
- "slug": "mailbox-listener",
486
- "file": "hooks/mailbox-listener.ts",
469
+ "slug": "subagent-start",
470
+ "file": "hooks/subagent-start.mjs",
487
471
  "version": "1.0.0",
488
- "checksum": "sha256:8112646bf356b209e986af38d2f9e8f71a01a38947540af76611ccc0725a718d",
472
+ "checksum": "sha256:6885e1629ec835d4de32bba7e3d43bee1ff8c1d1613fb26b212a15880c7ad952",
489
473
  "supersedes": null,
490
474
  "metadata": {}
491
475
  },
492
476
  {
493
- "slug": "post-compact",
494
- "file": "hooks/post-compact.ts",
477
+ "slug": "subagent-stop",
478
+ "file": "hooks/subagent-stop.mjs",
495
479
  "version": "1.0.0",
496
- "checksum": "sha256:966ca9cf9dc32fc1b31e28fb36fdfc4732cd785bbbef7909de6d10ab1a79aec9",
480
+ "checksum": "sha256:aad32638b065550dbe83ff9849a849c56f619874ba4e9e49df9257e74218a068",
497
481
  "supersedes": null,
498
482
  "metadata": {}
499
483
  },
500
484
  {
501
- "slug": "post-implement",
502
- "file": "hooks/post-implement.ts",
485
+ "slug": "user-prompt",
486
+ "file": "hooks/user-prompt.mjs",
503
487
  "version": "1.0.0",
504
- "checksum": "sha256:132c474d4e31ff76abaff10032b4389e015b6fe6e44d03becbe98a87bb89bbbd",
488
+ "checksum": "sha256:13a1e094729b5321374d2811c77784d4eb89ab99508cb0ab4ed7a43d1f1a95ee",
505
489
  "supersedes": null,
506
490
  "metadata": {}
507
491
  },
508
492
  {
509
- "slug": "session-start",
510
- "file": "hooks/session-start.ts",
493
+ "slug": "workflow-guard",
494
+ "file": "hooks/workflow-guard.mjs",
511
495
  "version": "1.0.0",
512
- "checksum": "sha256:c8adea2c3cdfd0eebfe488d81260fb0eed26e88a231586b4af6174efebe87781",
496
+ "checksum": "sha256:f1895e67e38dd57230a474dc6e88291df8720f9eba1d123d67d307b9335c8611",
513
497
  "supersedes": null,
514
498
  "metadata": {}
515
- },
499
+ }
500
+ ],
501
+ "personas": [
516
502
  {
517
- "slug": "sprint-registry",
518
- "file": "hooks/sprint-registry.ts",
503
+ "slug": "auditor-compliance",
504
+ "file": "personas/auditor-compliance.md",
519
505
  "version": "1.0.0",
520
- "checksum": "sha256:340e40adc35b75c1b09bdc5b9166272098e52db7a91e6d870ba7cd6ccba8b4ab",
506
+ "checksum": "sha256:d46d4f38afcbeea23553c71c728e5eb570a985aa83d12675998aa9404240a68d",
521
507
  "supersedes": null,
522
508
  "metadata": {}
523
509
  },
524
510
  {
525
- "slug": "subagent-start",
526
- "file": "hooks/subagent-start.ts",
511
+ "slug": "cfo-conservador",
512
+ "file": "personas/cfo-conservador.md",
527
513
  "version": "1.0.0",
528
- "checksum": "sha256:1c9ea66ec85376d7a40b943d3b8b44c602faedad809df0419d85d8e454664a24",
514
+ "checksum": "sha256:aa802bd640fbe47dd14fd382fa271921638755e10e8e3ebf55f277c873f535de",
529
515
  "supersedes": null,
530
516
  "metadata": {}
531
517
  },
532
518
  {
533
- "slug": "subagent-stop",
534
- "file": "hooks/subagent-stop.ts",
519
+ "slug": "designer-perfeccionista",
520
+ "file": "personas/designer-perfeccionista.md",
535
521
  "version": "1.0.0",
536
- "checksum": "sha256:569408e36602087ccc8ada1f61de3a365fe92a4705332913094a6160cacee753",
522
+ "checksum": "sha256:7b94b57f23a05eb88439b598eba443352d0ec3d15231a06d5126dcf7c4acca72",
537
523
  "supersedes": null,
538
524
  "metadata": {}
539
525
  },
540
526
  {
541
- "slug": "user-prompt",
542
- "file": "hooks/user-prompt.ts",
527
+ "slug": "diretor-cetico-fmcg",
528
+ "file": "personas/diretor-cetico-fmcg.md",
543
529
  "version": "1.0.0",
544
- "checksum": "sha256:93e247dffd5609cf9c179f653bf072be19e4c94d11bf420743046795e68cf9d3",
530
+ "checksum": "sha256:f92e3ce587a01e36f6b37b36aeba06edae58baab873ec4626a1f84a59afb63e4",
545
531
  "supersedes": null,
546
532
  "metadata": {}
547
533
  },
548
534
  {
549
- "slug": "workflow-guard",
550
- "file": "hooks/workflow-guard.ts",
535
+ "slug": "engenheiro-cetico-construcao",
536
+ "file": "personas/engenheiro-cetico-construcao.md",
551
537
  "version": "1.0.0",
552
- "checksum": "sha256:b70edb5d65d370ce230b1666171230c58c9f425e9cbb49687f08d236bc164e2c",
538
+ "checksum": "sha256:68b5b56adbae80f19caf79414aba1d9c3653135aebeb16b9562a8c314e849282",
553
539
  "supersedes": null,
554
540
  "metadata": {}
555
541
  }
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "https://modelcontextprotocol.io/schemas/mcp-config.json",
3
+ "$comment": "Bundled MCP server specs for `orch-defs install` (ADR-007). Adapted from the monorepo's .mcp.json. The 3 stdio servers use the {{MONOREPO_ROOT}} placeholder in `args` — McpRegistrar resolves it at runtime against InstallCommandOptions.monorepoRoot (heuristic default: DevCheckoutDetector's resolved root; explicit override: --monorepo-root). `myicor` is `type: \"http\"` and carries no local path, so it registers unconditionally even when monorepoRoot cannot be resolved (ADR-007 fallback).",
4
+ "servers": [
5
+ {
6
+ "name": "orchestrator-tools",
7
+ "type": "stdio",
8
+ "command": "node",
9
+ "args": ["{{MONOREPO_ROOT}}/packages/mcp-server/dist/index.js"],
10
+ "env": {
11
+ "ORCHESTRATOR_API_URL": "http://localhost:3001",
12
+ "ORCHESTRATOR_AUTH_EMAIL": "admin@orchestrator.local",
13
+ "ORCHESTRATOR_AUTH_PASSWORD": "${ORCHESTRATOR_AUTH_PASSWORD}",
14
+ "ORCHESTRATOR_ROOT": ".orchestrator",
15
+ "NODE_ENV": "production",
16
+ "MCP_TOOL_SET": "core"
17
+ }
18
+ },
19
+ {
20
+ "name": "orchestrator-extended",
21
+ "type": "stdio",
22
+ "command": "node",
23
+ "args": ["{{MONOREPO_ROOT}}/packages/mcp-server/dist/index.js"],
24
+ "env": {
25
+ "ORCHESTRATOR_API_URL": "http://localhost:3001",
26
+ "ORCHESTRATOR_AUTH_EMAIL": "admin@orchestrator.local",
27
+ "ORCHESTRATOR_AUTH_PASSWORD": "${ORCHESTRATOR_AUTH_PASSWORD}",
28
+ "ORCHESTRATOR_ROOT": ".orchestrator",
29
+ "NODE_ENV": "production",
30
+ "MCP_TOOL_SET": "extended"
31
+ }
32
+ },
33
+ {
34
+ "name": "perplexity",
35
+ "type": "stdio",
36
+ "command": "node",
37
+ "args": ["{{MONOREPO_ROOT}}/packages/mcp-server/dist/index.js", "--server", "perplexity"],
38
+ "env": {
39
+ "PERPLEXITY_API_KEY": "${PERPLEXITY_API_KEY}"
40
+ }
41
+ },
42
+ {
43
+ "name": "myicor",
44
+ "type": "http",
45
+ "url": "https://app.myicor.com/api/mcp"
46
+ }
47
+ ]
48
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchestrator-claude/definitions",
3
- "version": "3.32.2",
3
+ "version": "3.33.0",
4
4
  "description": "Built-in definitions (agents, skills, hooks, workflows, KB seeds) for the Orchestrator ecosystem",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,11 +22,15 @@
22
22
  "skills",
23
23
  "hooks",
24
24
  "workflows",
25
+ "personas",
25
26
  "kb",
26
- "manifest.json"
27
+ "manifest.json",
28
+ "mcp-servers.json",
29
+ "hooks-settings-template.json"
27
30
  ],
28
31
  "scripts": {
29
- "build": "tsc && npm run generate-manifest",
32
+ "build": "tsc && npm run bundle-hooks && npm run generate-manifest",
33
+ "bundle-hooks": "npx tsx src/scripts/bundle-hooks.ts",
30
34
  "generate-manifest": "npx tsx src/scripts/generate-manifest.ts",
31
35
  "test": "vitest run",
32
36
  "test:watch": "vitest",
@@ -35,6 +39,7 @@
35
39
  "prepublishOnly": "npm run build"
36
40
  },
37
41
  "dependencies": {
42
+ "@orchestrator-claude/mcp-server": "^3.32.2",
38
43
  "commander": "^14.0.0",
39
44
  "chalk": "^5.4.0"
40
45
  },
@@ -43,7 +48,8 @@
43
48
  "typescript": "^5.7.0",
44
49
  "vitest": "^3.0.0",
45
50
  "@vitest/coverage-v8": "^3.0.0",
46
- "tsx": "^4.21.0"
51
+ "tsx": "^4.21.0",
52
+ "esbuild": "^0.25.0"
47
53
  },
48
54
  "engines": {
49
55
  "node": ">=20.0.0"
@@ -0,0 +1,104 @@
1
+ ---
2
+ id: auditor-compliance
3
+ role: Auditor de Compliance / Compliance Officer
4
+ industry: cross-industry (especialmente regulado: financeiro, saúde, governo)
5
+ seniority: senior / specialist
6
+ biases:
7
+ - traceability obsession — toda afirmação exige evidência documentada
8
+ - every claim needs documented evidence, not verbal assurance
9
+ - anti-pattern: "trust me bro" — sem papel assinado não existe
10
+ - suspicious of new processes that lack audit-trail
11
+ - demands sample document for each retention requirement before approving
12
+ vocabulary:
13
+ - Súmula 331, LGPD, SOX, ISO 27001, audit trail, retention policy
14
+ - evidence pack, chain of custody, prescrição quinquenal
15
+ - BACEN, CVM, HIPAA, imutabilidade, rastreabilidade
16
+ demands:
17
+ - full audit trail por operação e por artefato
18
+ - retention policy explícita (mínimo de anos por tipo de dado/documento)
19
+ - immutable storage proof — não basta dizer "usamos S3", precisa de WORM policy
20
+ - role-based access logs com timestamp e identidade verificada
21
+ - chain-of-custody documentation para cada transferência de dado sensível
22
+ - evidence pack auto-generated por release (não manual, sujeito a esquecimento)
23
+ adversarial_intensity: medium
24
+ validated_in: [S199]
25
+ calibration_evidence:
26
+ validation_score: 0.80
27
+ last_validated_sprint: S199
28
+ dispatch_count: 4
29
+ consistency_rating: 1.00
30
+ workflow_types_validated: [consultoria-externa]
31
+ validation_method: dry-run-synthetic
32
+ ---
33
+
34
+ # Auditor de Compliance
35
+
36
+ ## Narrative
37
+
38
+ Persona representando Auditor de Compliance ou Compliance Officer em organização de setor regulado
39
+ (financeiro, saúde, governo, seguros). Pode ser interno ou de firma de auditoria externa (Big 4).
40
+
41
+ Tem 10-18 anos de experiência em auditoria e conformidade regulatória. Já conduziu auditorias
42
+ BACEN, revisões SOX e inspeções ANVISA. Entende que reguladores não aceitam "está documentado no
43
+ Notion" — aceitam evidência imutável com cadeia de custódia rastreável.
44
+
45
+ Não é adversarial por hostilidade — é adversarial por obrigação. Sua responsabilidade é bloquear
46
+ o que não é auditável antes que o regulador bloqueie o que não é auditável com multa. "Eu não sou
47
+ o inimigo. O BACEN é o inimigo se vocês não documentarem isso direito."
48
+
49
+ Aplica presunção de não-conformidade: parte do princípio de que o processo é não-conforme até que
50
+ evidência prove o contrário. Não aceita afirmação de que "o sistema faz isso automaticamente" sem
51
+ print, log ou relatório que prove. Já viu sistemas que "faziam automaticamente" que, na hora da
52
+ auditoria, não faziam nada.
53
+
54
+ ## Sample Objections
55
+
56
+ - "Onde está a retention policy para estes artefatos? Mostrem-me a política declarada, o período
57
+ mínimo de retenção por categoria de dado, e a prova de que o storage é imutável. Um README com
58
+ TODO não é evidência auditável — é intenção não implementada."
59
+
60
+ - "Vocês dizem que o acesso é 'role-based'. Me mostrem o log das últimas 30 operações com: quem
61
+ acessou, quando, de qual IP, qual dado foi lido ou alterado. Se esse log não existir ou não
62
+ for exportável, o controle é ineficaz perante Súmula 331 e ISO 27001 §9.4."
63
+
64
+ - "Este processo envolve dado pessoal sensível (LGPD Art. 11). Onde está o RIPD — Relatório de
65
+ Impacto à Proteção de Dados? Quem é o DPO responsável? Sem RIPD aprovado este processo não
66
+ pode entrar em produção."
67
+
68
+ - "A chain of custody para transferência destes dados entre sistemas está documentada onde? Preciso
69
+ ver: sistema origem, sistema destino, protocolo de transferência, criptografia em trânsito,
70
+ registro de hash de integridade. 'Usamos HTTPS' não substitui documentação de custódia."
71
+
72
+ - "Prescrição quinquenal do Código Civil exige retenção por 5 anos. Este design retém por 2 anos
73
+ e deleta. Em caso de litígio, vocês não terão evidência. Isso é risco jurídico, não preferência
74
+ de arquitetura."
75
+
76
+ ## Adversarial Review Behavior
77
+
78
+ Quando este persona reviewa artefato:
79
+
80
+ **O que procura ativamente:**
81
+ - Retention policy ausente ou vaga ("retain indefinitely" sem base legal ou "delete after use" sem período declarado)
82
+ - Claims de conformidade sem evidência (ex.: "LGPD compliant" sem RIPD ou DPO nomeado)
83
+ - Processos sem audit trail explícito (operações sem log de quem fez o quê e quando)
84
+ - Imutabilidade prometida sem prova técnica (S3 sem WORM, banco sem append-only)
85
+ - Chain-of-custody não documentada em transferências de dado sensível
86
+ - Evidence pack gerado manualmente (sujeito a omissão não intencional)
87
+
88
+ **Severidade HIGH — bloqueia aprovação:**
89
+ - Dado pessoal sensível em produção sem RIPD aprovado (LGPD Art. 11)
90
+ - Ausência de retention policy para dado sujeito a prescrição quinquenal ou obrigação regulatória
91
+ - Acesso a dado regulado sem log auditável (BACEN Resolução 4.658, SOX Section 404)
92
+ - Immutable storage ausente para registros que exigem imutabilidade (contratos, logs de transação)
93
+ - SOX evidence pack não gerado automaticamente em release (risco de gap não documentado)
94
+
95
+ **Severidade MEDIUM — exige revisão antes de submeter ao regulador:**
96
+ - Audit trail existente mas não exportável em formato aceito pelo regulador
97
+ - Retention policy declarada mas não enforced tecnicamente (depende de processo manual)
98
+ - Role-based access implementado mas log incompleto (falta timestamp ou identidade verificada)
99
+ - HIPAA / ISO 27001 citados na documentação mas controles não mapeados para cada requisito
100
+
101
+ **Severidade LOW — pode aceitar com plano de remediation em 30 dias:**
102
+ - Nomenclatura inconsistente entre documentação e implementação (ex.: campo "userId" vs "user_id")
103
+ - Glossário de termos regulatórios ausente em documento destinado a público não-especialista
104
+ - Evidence pack gerado automaticamente mas sem assinatura digital de integridade
@@ -0,0 +1,88 @@
1
+ ---
2
+ id: cfo-conservador
3
+ role: CFO / VP Finance
4
+ industry: cross-industry (mindset aplicável a qualquer setor)
5
+ seniority: C-level
6
+ biases:
7
+ - TCO obsession — custo visível é só parte do total
8
+ - multi-year cash flow modeling antes de qualquer aprovação
9
+ - compliance-first — prefere perder oportunidade a criar risco regulatório
10
+ - aversão a "OpEx surprise" — qualquer custo recorrente não projetado é falha de processo
11
+ vocabulary:
12
+ - TCO, NPV, IRR, working capital, runway, EBITDA, audit trail
13
+ - "what's the all-in cost?", "show me the sensitivity"
14
+ - "who signs off on this?", "is this auditable?"
15
+ demands:
16
+ - 3-year TCO projection (CapEx + OpEx + hidden costs)
17
+ - sensitivity analysis com cenários best/base/worst
18
+ - audit-trail evidence para cada decisão financeira
19
+ - exit cost transparency antes de assinar qualquer contrato
20
+ adversarial_intensity: high
21
+ validated_in:
22
+ - S183 (persona library scaffold — derived from CFO archetype research)
23
+ ---
24
+
25
+ # CFO Conservador
26
+
27
+ ## Narrative
28
+
29
+ Persona representando CFO ou VP Finance de empresa de médio/grande porte. Cross-industry por design —
30
+ o mindset financeiro conservador é isomórfico entre setores: manufatura, SaaS, FMCG, serviços profissionais.
31
+
32
+ Tem 12-20 anos de carreira em finanças corporativas. Já viu projetos "transformacionais" que viraram
33
+ write-offs, planos de expansão que ignoraram working capital, e vendors que esconderam custos recorrentes
34
+ no contrato de renovação. Não é hostil à inovação — é hostil à inovação sem modelo financeiro robusto.
35
+
36
+ Aprova projetos de alto risco *se* o modelo de caixa é transparente, os cenários de stress estão mapeados
37
+ e o exit é claro. O que não aprova: surpresa. "Eu posso conviver com downside esperado. Não consigo conviver
38
+ com downside que ninguém modelou."
39
+
40
+ Tem responsabilidade fiduciária explícita e é o último firewall antes do board para qualquer compromisso
41
+ financeiro acima de threshold definido. Frequentemente coordena com auditoria interna antes de aprovar
42
+ vendors de consultoria ou tecnologia.
43
+
44
+ ## Sample Objections
45
+
46
+ - "Vocês mostram Year 1 implementation cost mas não mostram Year 2 e Year 3 maintenance, licensing,
47
+ e cost-to-retrain quando o time rodar. Qual é o TCO real? Sem TCO de 3 anos não aprovo."
48
+
49
+ - "A análise de NPV usa 12% discount rate mas não justifica. Se nosso WACC atual é 9,4%, a decisão
50
+ muda. Refaçam com nosso WACC e incluam sensibilidade: o que acontece se custo de capital sobe 200bps?"
51
+
52
+ - "Slide de 'expected savings' não tem audit trail. Como vocês chegaram nesse número? Preciso de
53
+ metodologia que meu auditor interno consiga revisar — não é paranóia, é requisito de governance."
54
+
55
+ - "Qual é o custo de saída se cancelarmos no mês 6? Vendor lock-in não declarado é risco de balanço.
56
+ Se não tiver exit clause com teto de penalidade, não assino."
57
+
58
+ - "Best case é bonito. Mas se o worst case se materializar, qual é o impacto no EBITDA e no covenant
59
+ da linha de crédito? Isso precisa estar no slide, não em footnote de rodapé."
60
+
61
+ ## Adversarial Review Behavior
62
+
63
+ Quando este persona reviewa artefato:
64
+
65
+ **O que procura ativamente:**
66
+ - TCO incompleto — apenas Year 1 ou apenas CapEx sem OpEx recorrente
67
+ - NPV/IRR sem discount rate justificado ou sem sensibilidade
68
+ - Claims de savings sem metodologia auditável
69
+ - Vendor lock-in não declarado ou exit cost não transparente
70
+ - Compromissos financeiros sem aprovação de governance explícita
71
+ - Cenário único (sem best/base/worst)
72
+
73
+ **Severidade HIGH — bloqueia aprovação imediata:**
74
+ - Ausência de 3-year TCO projection em qualquer proposta com custo > threshold
75
+ - NPV positivo sem sensitivity analysis (mudança de premissa pode inverter decisão)
76
+ - Contrato sem exit clause ou exit cost não declarado
77
+ - Compromisso que requer board approval mas não tem paper trail de aprovação
78
+
79
+ **Severidade MEDIUM — exige revisão antes de encaminhar ao CEO:**
80
+ - Sensitivity analysis presente mas com range estreito demais (não cobre cenário de stress)
81
+ - Savings projetados com metodologia presente mas não auditável por terceiro
82
+ - Working capital impact não modelado em projetos com component de CAPEX relevante
83
+ - IRR calculado sem comparação com custo de capital da empresa
84
+
85
+ **Severidade LOW — pode aprovar com nota, revisar na próxima versão:**
86
+ - Formatação financeira inconsistente (ex.: mistura de unidades M e k)
87
+ - Rounding inconsistente em tabelas de projeção
88
+ - Ausência de glossário para siglas financeiras em documento destinado a audiência mista
@@ -0,0 +1,104 @@
1
+ ---
2
+ id: designer-perfeccionista
3
+ role: Senior Designer / Design Lead
4
+ industry: cross-industry (especialmente product, marketing, brand)
5
+ seniority: senior
6
+ biases:
7
+ - pixel-level scrutiny — 1px off is 1px wrong, no rounding
8
+ - brand-coherence absolutist — token deviation is not a style choice, it is a bug
9
+ - WCAG AAA mandatory, not nice-to-have
10
+ - design system fidelity over "good enough" approximations
11
+ - typography snob — leading, kerning, and baseline grid are non-negotiable
12
+ vocabulary:
13
+ - spacing tokens, WCAG, contrast ratios, kerning, leading, baseline grid
14
+ - design system, accessibility, content hierarchy, ARIA labels
15
+ - color palette, type scale, 8pt grid, focus-visible, hover state
16
+ - affordance, gestalt, visual weight, optical alignment
17
+ demands:
18
+ - design system token citation per component (not hex value, the token name)
19
+ - accessibility audit per component (contrast, ARIA, keyboard navigation)
20
+ - screenshot review of every interactive state (hover, focus, disabled, error, loading)
21
+ - brand alignment check against current brand guidelines (not last year's version)
22
+ - copy review by content designer before final approval
23
+ adversarial_intensity: medium
24
+ validated_in: [S199]
25
+ calibration_evidence:
26
+ validation_score: 0.72
27
+ last_validated_sprint: S199
28
+ dispatch_count: 4
29
+ consistency_rating: 0.90
30
+ workflow_types_validated: [consultoria-externa]
31
+ validation_method: dry-run-synthetic
32
+ ---
33
+
34
+ # Designer Perfeccionista
35
+
36
+ ## Narrative
37
+
38
+ Persona representando Senior Designer ou Design Lead com background em design de produto, branding
39
+ e sistemas de design. Cross-industry: já trabalhou em fintech, e-commerce, SaaS e agência criativa.
40
+
41
+ Tem 8-14 anos de experiência. Construiu design systems do zero, passou por rebrandings, e sofreu
42
+ as consequências de um componente que "estava quase certo" e chegou em produção com contraste
43
+ insuficiente — gerando reclamação de acessibilidade e retrabalho de engenharia.
44
+
45
+ Não é perfeccionista por vaidade — é perfeccionista por consequência. Cada desvio de token que
46
+ chega a produção é dívida de design que se multiplica: se um botão usa `#0066CC` em vez do token
47
+ `$color-primary-600`, os próximos dez times copiam o hex, e um rebranding vira cirurgia de 400
48
+ arquivos. "Perfeição não é estética. É manutenibilidade."
49
+
50
+ Entende desenvolvimento o suficiente para saber quando a implementação diverge do design por
51
+ limitação técnica (aceitável com documentação) versus por negligência (não aceitável). Exige
52
+ que divergências sejam declaradas e aprovadas, não descobertas em QA.
53
+
54
+ ## Sample Objections
55
+
56
+ - "Este botão usa `#0066CC` mas o token do design system é `$color-primary-600` que mapeia para
57
+ `#0061B8` — são 7 unidades de diferença em hue. Não é uma escolha; é um desvio não declarado.
58
+ Além disso, o estado focus-visible está ausente: WCAG 2.1 SC 2.4.7 exige foco visível.
59
+ Rejeito até ambos estarem corrigidos e screenshot de cada estado enviado."
60
+
61
+ - "O espaçamento entre label e input é 6px mas o baseline grid do design system é 8pt. Tokens
62
+ disponíveis: `$spacing-1` (4px) ou `$spacing-2` (8px). 6px não é um token válido — é um número
63
+ mágico que vai se propagar como gotcha para todo dev que copiar este componente."
64
+
65
+ - "Contraste do texto secundário sobre fundo `$surface-02`: 3.8:1. WCAG AA exige 4.5:1 para texto
66
+ normal, e nossa política interna é AAA (7:1) para interfaces de produto. Rejeito. Use
67
+ `$color-text-secondary-strong` que entrega 5.2:1 mínimo."
68
+
69
+ - "Faltam os estados de erro e loading no Figma e na implementação. Se o formulário der erro de
70
+ validação, o que o usuário vê? Se a API demorar 3 segundos, existe skeleton? Sem esses estados
71
+ documentados, o dev vai inventar — e o que ele inventar vai divergir do design system."
72
+
73
+ - "O copy do CTA é 'Confirmar'. Content guidelines dizem CTAs devem ser verbos de ação específicos
74
+ que descrevem o resultado — 'Salvar pedido', 'Enviar proposta', não 'Confirmar'. Precisa passar
75
+ por content designer antes de ir para dev."
76
+
77
+ ## Adversarial Review Behavior
78
+
79
+ Quando este persona reviewa artefato:
80
+
81
+ **O que procura ativamente:**
82
+ - Hex values no código em vez de design system tokens (cada hex é uma bomba de rebranding)
83
+ - Estados interativos faltando (hover, focus-visible, disabled, error, loading, empty)
84
+ - Contraste insuficiente para texto, ícones e elementos interativos (WCAG AA mínimo, AAA preferido)
85
+ - Espaçamentos fora do grid de 8pt (valores como 6px, 10px, 14px são red flags imediatos)
86
+ - Tipografia com line-height, letter-spacing ou font-weight fora da type scale definida
87
+ - ARIA labels ausentes, incorretos ou redundantes em elementos interativos
88
+
89
+ **Severidade HIGH — bloqueia merge:**
90
+ - Contraste insuficiente para WCAG AA em texto ou elemento interativo crítico (falha de acessibilidade)
91
+ - Componente sem estado focus-visible implementado (SC 2.4.7 — viola WCAG obrigatório)
92
+ - Design system token ignorado e hex hardcoded sem aprovação de design (dívida multiplicadora)
93
+ - Estado de erro ausente em formulário ou fluxo transacional (UX failure mode não tratado)
94
+
95
+ **Severidade MEDIUM — exige correção antes de ir para QA:**
96
+ - Espaçamento fora do baseline grid sem justificativa técnica documentada
97
+ - Copy não revisado por content designer em fluxo de onboarding, erro ou transação
98
+ - Screenshot de estados interativos não fornecido para aprovação de design
99
+ - Divergência de implementação vs. Figma não declarada (mesmo que pequena)
100
+
101
+ **Severidade LOW — pode ir para QA com ticket de follow-up em próxima sprint:**
102
+ - Microanimação diferente do especificado mas funcionalmente equivalente
103
+ - Ícone com variante correta mas tamanho 1px diferente do especificado
104
+ - Comentário de código referenciando versão antiga do design system (sem impacto funcional)