@jaimevalasek/aioson 1.28.0 → 1.29.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 (94) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/docs/pt/4-agentes/briefing.md +2 -0
  3. package/docs/pt/4-agentes/copywriter.md +2 -0
  4. package/docs/pt/4-agentes/genome.md +1 -0
  5. package/docs/pt/4-agentes/profiler-enricher.md +2 -0
  6. package/docs/pt/4-agentes/profiler-forge.md +2 -0
  7. package/docs/pt/4-agentes/sheldon.md +2 -0
  8. package/docs/pt/4-agentes/squad.md +12 -10
  9. package/docs/pt/5-referencia/comandos-cli.md +2 -0
  10. package/docs/pt/5-referencia/memoria-e-contexto.md +60 -0
  11. package/package.json +1 -1
  12. package/src/cli.js +5 -0
  13. package/src/commands/rules-lint.js +116 -0
  14. package/src/context-selector.js +29 -5
  15. package/template/.aioson/agents/analyst.md +57 -41
  16. package/template/.aioson/agents/architect.md +40 -33
  17. package/template/.aioson/agents/briefing.md +96 -81
  18. package/template/.aioson/agents/copywriter.md +34 -2
  19. package/template/.aioson/agents/discover.md +5 -8
  20. package/template/.aioson/agents/discovery-design-doc.md +42 -35
  21. package/template/.aioson/agents/genome.md +3 -1
  22. package/template/.aioson/agents/orache.md +6 -15
  23. package/template/.aioson/agents/orchestrator.md +38 -31
  24. package/template/.aioson/agents/pm.md +7 -0
  25. package/template/.aioson/agents/product.md +146 -174
  26. package/template/.aioson/agents/profiler-enricher.md +19 -0
  27. package/template/.aioson/agents/profiler-forge.md +6 -0
  28. package/template/.aioson/agents/qa.md +18 -10
  29. package/template/.aioson/agents/scope-check.md +6 -0
  30. package/template/.aioson/agents/sheldon.md +30 -14
  31. package/template/.aioson/agents/site-forge.md +2 -6
  32. package/template/.aioson/agents/squad.md +5 -12
  33. package/template/.aioson/agents/tester.md +29 -23
  34. package/template/.aioson/agents/ux-ui.md +43 -36
  35. package/template/.aioson/agents/validator.md +2 -2
  36. package/template/.aioson/docs/LAYERS.md +2 -0
  37. package/template/.aioson/docs/autonomy-protocol.md +7 -5
  38. package/template/.aioson/docs/autopilot-handoff.md +2 -0
  39. package/template/.aioson/docs/dev/execution-discipline.md +3 -0
  40. package/template/.aioson/docs/dev/simple-plan-lane.md +95 -92
  41. package/template/.aioson/docs/dev/stack-conventions.md +3 -0
  42. package/template/.aioson/docs/deyvin/continuity-recovery.md +21 -18
  43. package/template/.aioson/docs/deyvin/debugging-escalation.md +3 -0
  44. package/template/.aioson/docs/deyvin/pair-execution.md +3 -0
  45. package/template/.aioson/docs/deyvin/runtime-handoffs.md +3 -0
  46. package/template/.aioson/docs/dossier/agent-templates.md +3 -0
  47. package/template/.aioson/docs/dossier/schema.md +3 -0
  48. package/template/.aioson/docs/example-external-api-context.md +2 -0
  49. package/template/.aioson/docs/handoff-persistence.md +96 -94
  50. package/template/.aioson/docs/pentester/app-playbooks.md +3 -0
  51. package/template/.aioson/docs/pentester/browser-dast-playbook.md +401 -398
  52. package/template/.aioson/docs/pentester/llm-supplychain.md +3 -0
  53. package/template/.aioson/docs/quality/code-health-analysis.md +2 -0
  54. package/template/.aioson/docs/sheldon/enrichment-paths.md +3 -0
  55. package/template/.aioson/docs/sheldon/harness-contract.md +3 -0
  56. package/template/.aioson/docs/sheldon/quality-lens.md +3 -0
  57. package/template/.aioson/docs/sheldon/research-loop.md +3 -0
  58. package/template/.aioson/docs/sheldon/web-intelligence.md +3 -0
  59. package/template/.aioson/docs/site-forge-build.md +4 -2
  60. package/template/.aioson/docs/site-forge-extraction.md +2 -0
  61. package/template/.aioson/docs/site-forge-qa.md +2 -0
  62. package/template/.aioson/docs/site-forge-recon.md +7 -5
  63. package/template/.aioson/docs/site-forge-transform.md +2 -0
  64. package/template/.aioson/docs/squad/content-output.md +3 -0
  65. package/template/.aioson/docs/squad/creation-flow.md +22 -1
  66. package/template/.aioson/docs/squad/domain-breadth.md +3 -0
  67. package/template/.aioson/docs/squad/domain-classification.md +3 -0
  68. package/template/.aioson/docs/squad/eval-gate.md +3 -0
  69. package/template/.aioson/docs/squad/genome-bindings.md +14 -0
  70. package/template/.aioson/docs/squad/package-contract.md +5 -0
  71. package/template/.aioson/docs/squad/persona-grounding.md +65 -62
  72. package/template/.aioson/docs/squad/quality-lens.md +3 -0
  73. package/template/.aioson/docs/squad/research-loop.md +3 -0
  74. package/template/.aioson/docs/squad/session-operations.md +3 -0
  75. package/template/.aioson/docs/squad/workflow-quality.md +3 -0
  76. package/template/.aioson/docs/tester/coverage-quality.md +3 -0
  77. package/template/.aioson/rules/README.md +28 -0
  78. package/template/.aioson/rules/agent-language-policy.md +26 -21
  79. package/template/.aioson/rules/agent-structural-contract.md +5 -0
  80. package/template/.aioson/rules/aioson-context-boundary.md +6 -1
  81. package/template/.aioson/rules/canonical-path-contract.md +15 -10
  82. package/template/.aioson/rules/data-format-convention.md +16 -11
  83. package/template/.aioson/rules/disk-first-artifacts.md +10 -6
  84. package/template/.aioson/rules/example-monetary-values.md +4 -0
  85. package/template/.aioson/rules/output-brevity.md +2 -0
  86. package/template/.aioson/rules/prd-section-ownership.md +17 -12
  87. package/template/.aioson/rules/security-baseline.md +4 -0
  88. package/template/.aioson/rules/simple-plan-lane.md +5 -0
  89. package/template/.aioson/rules/spec-level-ownership.md +10 -5
  90. package/template/.aioson/rules/squad-driver-pattern.md +5 -0
  91. package/template/.aioson/tasks/squad-create.md +11 -0
  92. package/template/.aioson/tasks/squad-design.md +3 -3
  93. package/template/AGENTS.md +1 -1
  94. package/template/CLAUDE.md +1 -1
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  description: "Dev stack conventions — Laravel, UI/UX, design skill, motion, Web3, and any-stack separation rules."
3
+ agents: [dev, deyvin]
4
+ task_types: [implementation, conventions]
5
+ triggers: [stack conventions, framework patterns, implementing features]
3
6
  ---
4
7
 
5
8
  # Dev Stack Conventions
@@ -1,24 +1,27 @@
1
1
  ---
2
2
  description: "Deyvin continuity recovery — session start order, resumption rules, brownfield guardrails, SDD bridge, and Git fallback."
3
+ agents: [deyvin]
4
+ task_types: [continuity, recovery]
5
+ triggers: [continuity recovery, recent work, stale state]
3
6
  ---
4
7
 
5
8
  # Deyvin Continuity Recovery
6
9
 
7
- Load this module only when the task is continuity recovery, recent-work reconstruction, stale-state diagnosis, or resuming an existing slice.
10
+ Load this module only when the task is continuity recovery, recent-work reconstruction, stale-state diagnosis, or resuming an existing slice.
8
11
 
9
12
  ## Session start order
10
13
 
11
- Build context in this order:
12
-
13
- 1. If `aioson` is available, run `aioson memory:summary . --last=5` as the fast continuity bootstrap.
14
- 2. Read `.aioson/context/project.context.md`
15
- 3. Run `aioson context:select . --agent=deyvin --mode=planning --task="<task>" --paths="<known paths>"`.
16
- 4. Load only the selected PLANNING files. Do not load full `.aioson/rules/`, `.aioson/docs/`, `.aioson/design-docs/`, `discovery.md`, or `architecture.md` from this step alone.
17
- 5. If a feature slug is known, load its dossier/spec only when `context:select`, `dev-state.md`, or `project-pulse.md` points to that slug; use `spec-current.md` for active spec and `spec-history.md` only for history.
18
- 6. If code inspection/editing is about to start, run `aioson context:select . --agent=deyvin --mode=executing --task="<task>" --paths="<files to touch>"` and load only the selected EXECUTING files.
19
- 7. When the task matches procedural tags, run `aioson brain:query . --tags=<tags> --min-quality=4`.
20
- 8. Inspect recent runtime state in `.aioson/runtime/aios.sqlite` when memory summary is insufficient.
21
- 9. Use Git only as a fallback after memory + runtime + selected rules/docs.
14
+ Build context in this order:
15
+
16
+ 1. If `aioson` is available, run `aioson memory:summary . --last=5` as the fast continuity bootstrap.
17
+ 2. Read `.aioson/context/project.context.md`
18
+ 3. Run `aioson context:select . --agent=deyvin --mode=planning --task="<task>" --paths="<known paths>"`.
19
+ 4. Load only the selected PLANNING files. Do not load full `.aioson/rules/`, `.aioson/docs/`, `.aioson/design-docs/`, `discovery.md`, or `architecture.md` from this step alone.
20
+ 5. If a feature slug is known, load its dossier/spec only when `context:select`, `dev-state.md`, or `project-pulse.md` points to that slug; use `spec-current.md` for active spec and `spec-history.md` only for history.
21
+ 6. If code inspection/editing is about to start, run `aioson context:select . --agent=deyvin --mode=executing --task="<task>" --paths="<files to touch>"` and load only the selected EXECUTING files.
22
+ 7. When the task matches procedural tags, run `aioson brain:query . --tags=<tags> --min-quality=4`.
23
+ 8. Inspect recent runtime state in `.aioson/runtime/aios.sqlite` when memory summary is insufficient.
24
+ 9. Use Git only as a fallback after memory + runtime + selected rules/docs.
22
25
 
23
26
  If the user asks what happened recently, answer from memory and runtime first. Go to Git only if those sources are insufficient.
24
27
 
@@ -35,12 +38,12 @@ Do not duplicate or rewrite the shared SDD references inside `@deyvin`.
35
38
 
36
39
  ## Brownfield guardrails
37
40
 
38
- If `framework_installed=true` in `project.context.md` and the task depends on existing system behavior:
39
-
40
- - prefer selected module memory, `memory-index.md`, dossier, or spec before opening broad `discovery.md` / `architecture.md`
41
- - use `skeleton-system.md` or `memory-index.md` first for faster orientation
42
- - if `discovery.md` is missing but scan artifacts exist, stop and hand off to `@analyst`
43
- - if broad architecture decisions are required, hand off to `@architect`
41
+ If `framework_installed=true` in `project.context.md` and the task depends on existing system behavior:
42
+
43
+ - prefer selected module memory, `memory-index.md`, dossier, or spec before opening broad `discovery.md` / `architecture.md`
44
+ - use `skeleton-system.md` or `memory-index.md` first for faster orientation
45
+ - if `discovery.md` is missing but scan artifacts exist, stop and hand off to `@analyst`
46
+ - if broad architecture decisions are required, hand off to `@architect`
44
47
 
45
48
  ## Git fallback
46
49
 
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  description: "Deyvin debugging and escalation — root-cause protocol, retry limits, and when to hand off."
3
+ agents: [deyvin]
4
+ task_types: [debugging, bugfix]
5
+ triggers: [bug diagnosis, failing test, debugging escalation]
3
6
  ---
4
7
 
5
8
  # Deyvin Debugging and Escalation
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  description: "Deyvin pair execution — working mode, small-slice loop, memory updates, and implementation governance."
3
+ agents: [deyvin]
4
+ task_types: [implementation, pair-session]
5
+ triggers: [pair execution, small slice, polish]
3
6
  ---
4
7
 
5
8
  # Deyvin Pair Execution
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  description: "Deyvin runtime and handoffs — tracked session behavior, live milestones, direct sessions, and dashboard visibility."
3
+ agents: [deyvin]
4
+ task_types: [runtime, handoff]
5
+ triggers: [live session, runtime handoff, tracked session]
3
6
  ---
4
7
 
5
8
  # Deyvin Runtime and Handoffs
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  description: "Templates concretos por agente da cadeia (9 chain agents) para escrita no dossier via dossier:add-finding, dossier:add-codemap, dossier:link-rule e dossier:add-research. Bumped Phase 4 (agent-chain-continuity): @sheldon override (Why → Agent Trail + Research Index); novos templates para @ux-ui, @pm, @orchestrator; convenção DRIFT: para @dev."
3
+ agents: [product, analyst, sheldon, architect, pm, dev, qa, tester, briefing]
4
+ task_types: [dossier]
5
+ triggers: [dossier, agent trail, add finding]
3
6
  ---
4
7
 
5
8
  # Agent Dossier Templates
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  description: "Feature dossier schema (canônico v1.0 + v1.1 Phase 3 + v1.2 Research Index) e handoff-protocol artifact_uris v2. Lido por src/dossier/schema.js e src/session-handoff.js — toda mudança aqui exige bump de schema_version."
3
+ agents: [product, analyst, sheldon, architect, pm, dev, qa, tester, briefing]
4
+ task_types: [dossier]
5
+ triggers: [dossier schema, dossier structure]
3
6
  ---
4
7
 
5
8
  # Feature Dossier — Schema canônico
@@ -1,5 +1,7 @@
1
1
  ---
2
2
  description: "Template for documenting an external API integration context — replace with real content"
3
+ task_types: [integration]
4
+ triggers: [external api, integration context]
3
5
  scope: "global"
4
6
  agents: []
5
7
  ---
@@ -1,94 +1,96 @@
1
- ---
2
- description: "Persist context to plans/{slug}.md before suggesting /clear in a cross-session handoff — preserves the diagnostic so the next agent works from an artifact, not from chat memory."
3
- ---
4
-
5
- # Handoff Persistence
6
-
7
- Load this when you are about to issue a routing recommendation that involves `/clear`, a fresh terminal, or any other context boundary that drops the current conversation. Same-session handoffs (the next agent inherits the same chat) do not need this — skip the doc.
8
-
9
- ## The problem
10
-
11
- A routing agent (`@neo`, `@deyvin`) ends a session by suggesting:
12
- 1. `/agent` — activate the next agent
13
- 2. `/clear` fresh context window before continuing
14
-
15
- If the recommendation depends on diagnostic work done in this session (file reads, line numbers, decisions made, options weighed), and the user runs `/clear` first, **all of that context is lost**. The next agent reads only the seed prompt the user types — which can never capture the nuance of the actual diagnostic.
16
-
17
- A seed prompt is a memory of a conversation. An artifact is a memory of work.
18
-
19
- ## The rule
20
-
21
- Before suggesting `/clear` to the user, persist the actionable diagnostic to `plans/{slug}.md` at the project root. Then the recommendation becomes:
22
-
23
- ```
24
- 1. Activate /briefing (or /product / /architect / …)
25
- 2. /clear is safe — the next agent reads plans/{slug}.md
26
- ```
27
-
28
- `plans/` is the canonical input directory for `/aioson:agent:briefing` (and a useful seed for `/aioson:agent:product` too). The directory may not exist yet — create it.
29
-
30
- ## When to apply
31
-
32
- | Situation | Persist? |
33
- |---|---|
34
- | Handoff routes to an agent that takes raw plans (`/aioson:agent:briefing` first and foremost, sometimes `/aioson:agent:product`) | Yes |
35
- | Handoff routes to an agent that needs a discovery pass (`/aioson:agent:analyst`, `/aioson:agent:architect`, `/aioson:agent:sheldon`) | Yes — they read context from `.aioson/context/` AND from raw plans |
36
- | Same-session continuation (`/aioson:agent:dev` keeps going, `/aioson:agent:qa` reviews implementation just done) | No — context is in chat |
37
- | Handoff happens via tracked live session (`aioson live:handoff`) | Notelemetry already carries the trail |
38
- | Trivial routing ("you want `/aioson:agent:setup` first") with no diagnostic to preserve | No |
39
-
40
- ## What to write
41
-
42
- Structure of `plans/{slug}.md` (lightweight — `/aioson:agent:briefing` will enrich it):
43
-
44
- ```md
45
- # {Short title} — raw plan
46
-
47
- > Status: raw input for /{next-agent}. Generated {date} during a /{this-agent} session.
48
-
49
- ## Why this exists
50
- 1-2 paragraphs framing the problem in the user's terms.
51
-
52
- ## Symptoms observed
53
- Concrete pinned facts: line numbers, file paths, command outputs. Not opinions.
54
-
55
- ## What's already delivered
56
- If part of the work landed in this session, name the commits/files.
57
-
58
- ## Proposed scope (if applicable)
59
- Layers / phases / options the next agent should consider. Mark recommendations.
60
-
61
- ## Open decisions for the next agent to surface
62
- Questions that need user input but were out of scope for this session.
63
-
64
- ## Pointers
65
- Files, commits, line numbers, related plans/. The next agent reads these directly.
66
-
67
- ## Out of scope
68
- What you deliberately did NOT cover. Prevents the next agent from re-litigating.
69
- ```
70
-
71
- Slug rules: kebab-case, descriptive, unique inside `plans/`. Examples: `lay-user-agent-mode.md`, `payment-integration.md`, `auth-rewrite-rfc.md`. Avoid generic names like `notes.md` or `plan.md`.
72
-
73
- ## What to tell the user
74
-
75
- After persisting, end with a clear handoff block. Example:
76
-
77
- ```
78
- ## Next Up
79
- - Routed to: /briefing
80
- - Activate: /briefing
81
- - Context persisted: plans/lay-user-agent-mode.md
82
- - /clear is safe — the next agent reads from the file
83
-
84
- Session artifacts written:
85
- - [x] plans/lay-user-agent-mode.md
86
- - [x] {any other files this session produced}
87
- ```
88
-
89
- ## Anti-patterns
90
-
91
- - **Inlining 2 KB of diagnostic as a "seed prompt" in the routing message.** The user shouldn't have to copy-paste a wall of text. Persist it.
92
- - **Persisting trivial routings.** A user who asks "what does `/aioson:agent:setup` do" doesn't need a `plans/` file written. Apply the table above.
93
- - **Persisting code archaeology.** Code lives in code; reading recommendations live in the artifact only when they would otherwise be lost across `/clear`.
94
- - **Forgetting to mention the file.** If you wrote `plans/{slug}.md` but the handoff message doesn't reference it, the user won't know to read it (or to let the next agent read it).
1
+ ---
2
+ description: "Persist context to plans/{slug}.md before suggesting /clear in a cross-session handoff — preserves the diagnostic so the next agent works from an artifact, not from chat memory."
3
+ task_types: [handoff]
4
+ triggers: [handoff, session persistence, last handoff]
5
+ ---
6
+
7
+ # Handoff Persistence
8
+
9
+ Load this when you are about to issue a routing recommendation that involves `/clear`, a fresh terminal, or any other context boundary that drops the current conversation. Same-session handoffs (the next agent inherits the same chat) do not need this — skip the doc.
10
+
11
+ ## The problem
12
+
13
+ A routing agent (`@neo`, `@deyvin`) ends a session by suggesting:
14
+ 1. `/agent` — activate the next agent
15
+ 2. `/clear` fresh context window before continuing
16
+
17
+ If the recommendation depends on diagnostic work done in this session (file reads, line numbers, decisions made, options weighed), and the user runs `/clear` first, **all of that context is lost**. The next agent reads only the seed prompt the user types which can never capture the nuance of the actual diagnostic.
18
+
19
+ A seed prompt is a memory of a conversation. An artifact is a memory of work.
20
+
21
+ ## The rule
22
+
23
+ Before suggesting `/clear` to the user, persist the actionable diagnostic to `plans/{slug}.md` at the project root. Then the recommendation becomes:
24
+
25
+ ```
26
+ 1. Activate /briefing (or /product / /architect / …)
27
+ 2. /clear is safe — the next agent reads plans/{slug}.md
28
+ ```
29
+
30
+ `plans/` is the canonical input directory for `/aioson:agent:briefing` (and a useful seed for `/aioson:agent:product` too). The directory may not exist yet — create it.
31
+
32
+ ## When to apply
33
+
34
+ | Situation | Persist? |
35
+ |---|---|
36
+ | Handoff routes to an agent that takes raw plans (`/aioson:agent:briefing` first and foremost, sometimes `/aioson:agent:product`) | Yes |
37
+ | Handoff routes to an agent that needs a discovery pass (`/aioson:agent:analyst`, `/aioson:agent:architect`, `/aioson:agent:sheldon`) | Yesthey read context from `.aioson/context/` AND from raw plans |
38
+ | Same-session continuation (`/aioson:agent:dev` keeps going, `/aioson:agent:qa` reviews implementation just done) | No context is in chat |
39
+ | Handoff happens via tracked live session (`aioson live:handoff`) | No — telemetry already carries the trail |
40
+ | Trivial routing ("you want `/aioson:agent:setup` first") with no diagnostic to preserve | No |
41
+
42
+ ## What to write
43
+
44
+ Structure of `plans/{slug}.md` (lightweight — `/aioson:agent:briefing` will enrich it):
45
+
46
+ ```md
47
+ # {Short title} raw plan
48
+
49
+ > Status: raw input for /{next-agent}. Generated {date} during a /{this-agent} session.
50
+
51
+ ## Why this exists
52
+ 1-2 paragraphs framing the problem in the user's terms.
53
+
54
+ ## Symptoms observed
55
+ Concrete pinned facts: line numbers, file paths, command outputs. Not opinions.
56
+
57
+ ## What's already delivered
58
+ If part of the work landed in this session, name the commits/files.
59
+
60
+ ## Proposed scope (if applicable)
61
+ Layers / phases / options the next agent should consider. Mark recommendations.
62
+
63
+ ## Open decisions for the next agent to surface
64
+ Questions that need user input but were out of scope for this session.
65
+
66
+ ## Pointers
67
+ Files, commits, line numbers, related plans/. The next agent reads these directly.
68
+
69
+ ## Out of scope
70
+ What you deliberately did NOT cover. Prevents the next agent from re-litigating.
71
+ ```
72
+
73
+ Slug rules: kebab-case, descriptive, unique inside `plans/`. Examples: `lay-user-agent-mode.md`, `payment-integration.md`, `auth-rewrite-rfc.md`. Avoid generic names like `notes.md` or `plan.md`.
74
+
75
+ ## What to tell the user
76
+
77
+ After persisting, end with a clear handoff block. Example:
78
+
79
+ ```
80
+ ## Next Up
81
+ - Routed to: /briefing
82
+ - Activate: /briefing
83
+ - Context persisted: plans/lay-user-agent-mode.md
84
+ - /clear is safe — the next agent reads from the file
85
+
86
+ Session artifacts written:
87
+ - [x] plans/lay-user-agent-mode.md
88
+ - [x] {any other files this session produced}
89
+ ```
90
+
91
+ ## Anti-patterns
92
+
93
+ - **Inlining 2 KB of diagnostic as a "seed prompt" in the routing message.** The user shouldn't have to copy-paste a wall of text. Persist it.
94
+ - **Persisting trivial routings.** A user who asks "what does `/aioson:agent:setup` do" doesn't need a `plans/` file written. Apply the table above.
95
+ - **Persisting code archaeology.** Code lives in code; reading recommendations live in the artifact only when they would otherwise be lost across `/clear`.
96
+ - **Forgetting to mention the file.** If you wrote `plans/{slug}.md` but the handoff message doesn't reference it, the user won't know to read it (or to let the next agent read it).
@@ -1,5 +1,8 @@
1
1
  ---
2
2
  description: "Pentester deep playbooks for app_target surfaces TS-A01..A07 — IDOR/BOLA, secrets/crypto, injection/XSS, race/insecure design, auth/rate-limit. Load when review_contract.target_mode = app_target."
3
+ agents: [pentester]
4
+ task_types: [security, pentest]
5
+ triggers: [pentest, app target, security review]
3
6
  ---
4
7
 
5
8
  # Pentester — App Target Playbooks