@event4u/agent-config 2.16.0 → 2.17.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/.agent-src/commands/ghostwriter/delete.md +118 -0
- package/.agent-src/commands/ghostwriter/fetch.md +185 -0
- package/.agent-src/commands/ghostwriter/list.md +102 -0
- package/.agent-src/commands/ghostwriter/show.md +113 -0
- package/.agent-src/commands/ghostwriter/write.md +160 -0
- package/.agent-src/commands/ghostwriter.md +96 -0
- package/.agent-src/commands/post-as/ghostwriter.md +66 -0
- package/.agent-src/commands/post-as/me.md +124 -0
- package/.agent-src/commands/post-as.md +58 -0
- package/.agent-src/ghostwriter/README.md +61 -0
- package/.agent-src/ghostwriter/fictional-fixture-v1.md +94 -0
- package/.agent-src/personas/README.md +8 -0
- package/.agent-src/rules/domain-safety-disclaimer-consulting.md +52 -0
- package/.agent-src/rules/domain-safety-disclaimer-financial.md +54 -0
- package/.agent-src/rules/domain-safety-disclaimer-legal.md +49 -0
- package/.agent-src/rules/domain-safety-disclaimer-medical.md +56 -0
- package/.agent-src/rules/domain-safety-export-redact.md +65 -0
- package/.agent-src/rules/domain-safety-logging-pii-floor.md +55 -0
- package/.agent-src/rules/domain-safety-pii-finance.md +57 -0
- package/.agent-src/rules/domain-safety-pii-marketing.md +60 -0
- package/.agent-src/rules/domain-safety-pii-recruiting.md +56 -0
- package/.agent-src/rules/domain-safety-pii-support.md +57 -0
- package/.agent-src/rules/domain-safety-retention-finance.md +48 -0
- package/.agent-src/rules/domain-safety-retention-support.md +55 -0
- package/.agent-src/skills/api-design/SKILL.md +3 -0
- package/.agent-src/skills/authz-review/SKILL.md +3 -0
- package/.agent-src/skills/competitive-moat-analysis/SKILL.md +3 -0
- package/.agent-src/skills/competitive-positioning/SKILL.md +3 -0
- package/.agent-src/skills/content-funnel-design/SKILL.md +3 -0
- package/.agent-src/skills/contracts-cognition/SKILL.md +3 -0
- package/.agent-src/skills/dashboard-design/SKILL.md +3 -0
- package/.agent-src/skills/data-handling-judgment/SKILL.md +3 -0
- package/.agent-src/skills/dcf-modeling/SKILL.md +3 -0
- package/.agent-src/skills/deal-qualification-meddic/SKILL.md +3 -0
- package/.agent-src/skills/discovery-interview/SKILL.md +3 -0
- package/.agent-src/skills/editorial-calendar/SKILL.md +3 -0
- package/.agent-src/skills/forecast-accuracy/SKILL.md +3 -0
- package/.agent-src/skills/forecasting/SKILL.md +3 -0
- package/.agent-src/skills/fundraising-narrative/SKILL.md +3 -0
- package/.agent-src/skills/gtm-launch/SKILL.md +3 -0
- package/.agent-src/skills/incident-commander/SKILL.md +3 -0
- package/.agent-src/skills/launch-readiness/SKILL.md +3 -0
- package/.agent-src/skills/messaging-architecture/SKILL.md +3 -0
- package/.agent-src/skills/okr-tree-modeling/SKILL.md +3 -0
- package/.agent-src/skills/pipeline-strategy/SKILL.md +3 -0
- package/.agent-src/skills/playwright-architect/SKILL.md +3 -0
- package/.agent-src/skills/privacy-review/SKILL.md +4 -1
- package/.agent-src/skills/quality-tools/SKILL.md +3 -0
- package/.agent-src/skills/release-comms/SKILL.md +3 -0
- package/.agent-src/skills/runway-cognition/SKILL.md +3 -0
- package/.agent-src/skills/scenario-modeling/SKILL.md +3 -0
- package/.agent-src/skills/secrets-management/SKILL.md +3 -0
- package/.agent-src/skills/tech-debt-tracker/SKILL.md +3 -0
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +3 -0
- package/.agent-src/skills/voc-extract/SKILL.md +3 -0
- package/.agent-src/skills/voice-and-tone-design/SKILL.md +3 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +16 -1
- package/.claude-plugin/marketplace.json +10 -1
- package/CHANGELOG.md +69 -0
- package/README.md +44 -23
- package/config/gitignore-block.txt +8 -0
- package/docs/announcements/2026-05-non-dev-launch.md +79 -0
- package/docs/architecture.md +2 -2
- package/docs/case-studies/_template.md +60 -0
- package/docs/catalog.md +24 -3
- package/docs/contracts/agent-user-schema.md +1 -0
- package/docs/contracts/command-clusters.md +2 -0
- package/docs/contracts/file-ownership-matrix.json +490 -0
- package/docs/contracts/ghostwriter-schema.md +337 -0
- package/docs/contracts/init-telemetry.md +133 -0
- package/docs/contracts/router-blending.md +71 -0
- package/docs/contracts/universal-skills.md +92 -0
- package/docs/contracts/write-engine.md +142 -0
- package/docs/getting-started-by-role.md +89 -0
- package/docs/getting-started-laravel.md +72 -0
- package/docs/getting-started.md +2 -2
- package/docs/safety.md +30 -0
- package/package.json +1 -1
- package/scripts/bench_runner.py +158 -0
- package/scripts/check_role_doc_links.py +110 -0
- package/scripts/compress.py +11 -0
- package/scripts/ghostwriter_fixture_allowlist.txt +16 -0
- package/scripts/install.py +133 -1
- package/scripts/lint_ghostwriter_source.py +240 -0
- package/scripts/measure_skill_reduction.py +102 -0
- package/scripts/schemas/rule.schema.json +5 -0
- package/scripts/schemas/skill.schema.json +6 -0
- package/scripts/update-github-metadata.sh +84 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ghostwriter
|
|
3
|
+
tier: 2
|
|
4
|
+
description: Ghostwriter cluster — fetch, write, list, show, and delete public-figure voice profiles (the third voice primitive alongside personas/ and .agent-user.md).
|
|
5
|
+
cluster: ghostwriter
|
|
6
|
+
type: orchestrator
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: true
|
|
10
|
+
trigger_description: "fetch a public figure's writing voice, write in someone's style, list ghostwriter profiles, refresh stale profile"
|
|
11
|
+
trigger_context: "user wants to capture or use the public-facing writing voice of a documented public figure for AI-assisted drafting"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /ghostwriter
|
|
15
|
+
|
|
16
|
+
Top-level orchestrator for the `/ghostwriter` family — the **public-figure
|
|
17
|
+
voice cluster**. Captures and consumes the writing voice of documented
|
|
18
|
+
public figures (authors, executives, academics, journalists, public
|
|
19
|
+
speakers, deceased historical figures).
|
|
20
|
+
|
|
21
|
+
The third voice primitive in the package:
|
|
22
|
+
|
|
23
|
+
- `personas/*.md` — review-lens voices (internal critique).
|
|
24
|
+
- `.agent-user.md` — the maintainer's own voice (self).
|
|
25
|
+
- `ghostwriter/*.md` — external public-figure voices (this cluster).
|
|
26
|
+
|
|
27
|
+
No folding, no shared schema, no cross-cluster commands. Schema contract:
|
|
28
|
+
[`ghostwriter-schema`](../docs/contracts/ghostwriter-schema.md).
|
|
29
|
+
|
|
30
|
+
> Looking to write in **your own** voice? Use
|
|
31
|
+
> [`/post-as:me`](post-as/me.md) (reads `.agent-user.md`, no disclosure
|
|
32
|
+
> footer — you are the author).
|
|
33
|
+
|
|
34
|
+
## Sub-commands
|
|
35
|
+
|
|
36
|
+
| Sub-command | Routes to | Purpose |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| `/ghostwriter:fetch` | `commands/ghostwriter/fetch.md` | Build a profile from a URL or a bare name via host-agent web-fetch / web-search; runs the public-figure attestation gate before writing |
|
|
39
|
+
| `/ghostwriter:write` | `commands/ghostwriter/write.md` | Draft markdown in the selected ghostwriter's voice with the mandatory disclosure footer |
|
|
40
|
+
| `/ghostwriter:list` | `commands/ghostwriter/list.md` | Numbered listing of available profiles with confidence and stale-warning flags |
|
|
41
|
+
| `/ghostwriter:show` | `commands/ghostwriter/show.md` | Read-only render of a single profile (identity, fingerprint, samples, taboos, sources) |
|
|
42
|
+
| `/ghostwriter:delete` | `commands/ghostwriter/delete.md` | Two-step confirmation, hard-delete the profile file |
|
|
43
|
+
|
|
44
|
+
Cluster locked in
|
|
45
|
+
[`command-clusters`](../docs/contracts/command-clusters.md).
|
|
46
|
+
|
|
47
|
+
## Dispatch
|
|
48
|
+
|
|
49
|
+
1. Parse the user's argument: `/ghostwriter:<sub> [args]` or
|
|
50
|
+
`/ghostwriter <sub> [args]`.
|
|
51
|
+
2. Look up the sub-command in the table above.
|
|
52
|
+
3. Load the routed file and follow its `## Steps` section verbatim
|
|
53
|
+
with the remaining args.
|
|
54
|
+
4. Unknown or missing sub-command → print the table and ask which one.
|
|
55
|
+
**One sub-command per turn**; do not chain.
|
|
56
|
+
|
|
57
|
+
## Rules
|
|
58
|
+
|
|
59
|
+
- **Zero network code in this package.** `fetch` delegates web-fetch /
|
|
60
|
+
web-search to the host agent's built-in tools. If the host cannot
|
|
61
|
+
fetch / search, the command emits a paste-prompt and accepts the
|
|
62
|
+
user's manual paste.
|
|
63
|
+
- **Public figures only.** The public-figure-category enum in
|
|
64
|
+
[`ghostwriter-schema § identity`](../docs/contracts/ghostwriter-schema.md)
|
|
65
|
+
is the binding allowlist. Private individuals are rejected — no
|
|
66
|
+
fair-use defence.
|
|
67
|
+
- **Mandatory disclosure footer.** Every `:write` output ends with
|
|
68
|
+
`*Written in the style of <name>, not by them.*` (or the equivalent
|
|
69
|
+
in the user's language). No `--no-disclosure` flag exists.
|
|
70
|
+
- **Banned source content.** Private DMs, paywalled material,
|
|
71
|
+
login-walled content, leaked drafts, retracted content, anything
|
|
72
|
+
explicitly marked private. See
|
|
73
|
+
[`ghostwriter-schema § exclusions`](../docs/contracts/ghostwriter-schema.md).
|
|
74
|
+
- **No commit / push / PR** unless the sub-command explicitly authorises
|
|
75
|
+
it (none currently do).
|
|
76
|
+
- **Edit `.agent-src.uncompressed/` only.** `.agent-src/` and `.augment/`
|
|
77
|
+
regenerate from source.
|
|
78
|
+
|
|
79
|
+
## Storage model (recap)
|
|
80
|
+
|
|
81
|
+
| Location | Holds | Tracked in git? |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| `agents/ghostwriter/<slug>.md` (consumer) | Real-person public-figure profiles | **No** — gitignored by default. `--shared` opt-in deferred to v2. |
|
|
84
|
+
| `agents/ghostwriter/README.md` (consumer) | Directory anchor + how-to | Yes |
|
|
85
|
+
| `.agent-src.uncompressed/ghostwriter/*.md` (package) | `fictional: true` fixtures only | Yes — CI-enforced by `scripts/lint_ghostwriter_source.py` |
|
|
86
|
+
|
|
87
|
+
Slug = full-name kebab-case with optional `-<discriminator>` suffix
|
|
88
|
+
(`alice-walker` vs `alice-walker-novelist`). The package never
|
|
89
|
+
deduplicates slugs across consumer projects — namespace collisions are
|
|
90
|
+
consumer-owned.
|
|
91
|
+
|
|
92
|
+
## See also
|
|
93
|
+
|
|
94
|
+
- [`ghostwriter-schema`](../docs/contracts/ghostwriter-schema.md) — locked v1 frontmatter and verification levels.
|
|
95
|
+
- [`/post-as:me`](post-as/me.md) — write in the maintainer's own voice (separate primitive, no disclosure footer).
|
|
96
|
+
- [`/post-as:ghostwriter`](post-as/ghostwriter.md) — thin alias for `/ghostwriter:write`.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: post-as:ghostwriter
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: post-as
|
|
5
|
+
sub: ghostwriter
|
|
6
|
+
description: Thin alias for /ghostwriter:write — drafts a copyable markdown post in a captured public-figure voice with the mandatory non-removable disclosure footer.
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: true
|
|
10
|
+
trigger_description: "post as ghostwriter, draft as a public figure, write in style of X, post-as alias for ghostwriter:write"
|
|
11
|
+
trigger_context: "user invokes /post-as:ghostwriter as a discoverable alias for /ghostwriter:write — same flags, same output, same mandatory disclosure footer"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /post-as:ghostwriter
|
|
15
|
+
|
|
16
|
+
**Thin alias** for [`/ghostwriter:write`](../ghostwriter/write.md).
|
|
17
|
+
Same flags, same output, same procedural contract, same **mandatory
|
|
18
|
+
non-removable disclosure footer**.
|
|
19
|
+
|
|
20
|
+
This command exists so the `/post-as:*` cluster is discoverable as a
|
|
21
|
+
single consumer-facing surface (`/post-as:me` for self,
|
|
22
|
+
`/post-as:ghostwriter` for public figures). It does not introduce
|
|
23
|
+
new behaviour.
|
|
24
|
+
|
|
25
|
+
## Steps
|
|
26
|
+
|
|
27
|
+
### 1. Forward to `/ghostwriter:write`
|
|
28
|
+
|
|
29
|
+
Invoke [`/ghostwriter:write`](../ghostwriter/write.md) with **every
|
|
30
|
+
argument and flag passed through verbatim**:
|
|
31
|
+
|
|
32
|
+
- `/post-as:ghostwriter` → `/ghostwriter:write`
|
|
33
|
+
- `/post-as:ghostwriter --as=<slug>` → `/ghostwriter:write --as=<slug>`
|
|
34
|
+
- `/post-as:ghostwriter <slug> --tone=casual --length=180 --channel=linkedin-post --audience="early-stage founders"`
|
|
35
|
+
→ `/ghostwriter:write <slug> --tone=casual --length=180 --channel=linkedin-post --audience="early-stage founders"`
|
|
36
|
+
|
|
37
|
+
Follow the routed file's `## Steps` section verbatim. Do not
|
|
38
|
+
re-implement, do not skip, do not add steps.
|
|
39
|
+
|
|
40
|
+
### 2. Disclosure footer (mandatory — inherited from `/ghostwriter:write`)
|
|
41
|
+
|
|
42
|
+
The footer is appended by `/ghostwriter:write`'s output template (per
|
|
43
|
+
[`write-engine § 5`](../../../docs/contracts/write-engine.md)). This
|
|
44
|
+
alias inherits the footer unconditionally — no `--no-disclosure`
|
|
45
|
+
flag, no `--internal` flag, no opt-out. Any flag that would suppress
|
|
46
|
+
it is forbidden by design.
|
|
47
|
+
|
|
48
|
+
## Rules
|
|
49
|
+
|
|
50
|
+
- **Do NOT diverge from `/ghostwriter:write`.** This file is a thin
|
|
51
|
+
alias; behavioural drift is forbidden. If a new flag lands on
|
|
52
|
+
`/ghostwriter:write`, it is automatically available here via the
|
|
53
|
+
pass-through.
|
|
54
|
+
- **Do NOT add new steps, prompts, or output sections.** They belong
|
|
55
|
+
on `/ghostwriter:write` (the canonical file).
|
|
56
|
+
- **Do NOT commit, push, or open a PR.** The user owns the git surface.
|
|
57
|
+
- **Do NOT consume `.agent-user.md`** — that is `/post-as:me`'s
|
|
58
|
+
source. This alias only fronts the ghostwriter primitive.
|
|
59
|
+
|
|
60
|
+
## See also
|
|
61
|
+
|
|
62
|
+
- [`/ghostwriter:write`](../ghostwriter/write.md) — canonical implementation; this file is a thin alias.
|
|
63
|
+
- [`/post-as`](../post-as.md) — parent cluster.
|
|
64
|
+
- [`/post-as:me`](me.md) — sibling consumer, user-self voice, no footer.
|
|
65
|
+
- [`write-engine`](../../../docs/contracts/write-engine.md) — shared procedural contract.
|
|
66
|
+
- [`ghostwriter-schema`](../../../docs/contracts/ghostwriter-schema.md) — locked v1 frontmatter.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: post-as:me
|
|
3
|
+
tier: 2
|
|
4
|
+
cluster: post-as
|
|
5
|
+
sub: me
|
|
6
|
+
description: Draft a copyable markdown post in the maintainer's own voice (style source = .agent-user.md.voice_sample). No disclosure footer — the user is the author.
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: true
|
|
10
|
+
trigger_description: "write as me, draft in my own voice, post as myself, draft from .agent-user.md"
|
|
11
|
+
trigger_context: "user wants a copyable draft in their own captured voice from .agent-user.md; no third-party voice, no disclosure footer"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /post-as:me
|
|
15
|
+
|
|
16
|
+
Generate a copyable markdown draft in the **maintainer's own voice**.
|
|
17
|
+
Style source is the project-root `.agent-user.md` file. Implements
|
|
18
|
+
the [`write-engine`](../../../docs/contracts/write-engine.md)
|
|
19
|
+
contract — **the disclosure footer is omitted** because the user is
|
|
20
|
+
the author.
|
|
21
|
+
|
|
22
|
+
> Writing in a **public figure's** voice? Use
|
|
23
|
+
> [`/post-as:ghostwriter`](ghostwriter.md) or
|
|
24
|
+
> [`/ghostwriter:write`](../ghostwriter/write.md) — both append the
|
|
25
|
+
> mandatory disclosure footer.
|
|
26
|
+
|
|
27
|
+
## Steps
|
|
28
|
+
|
|
29
|
+
### 1. Locate `.agent-user.md`
|
|
30
|
+
|
|
31
|
+
Look in the project root.
|
|
32
|
+
|
|
33
|
+
| State | Action |
|
|
34
|
+
|---|---|
|
|
35
|
+
| File missing | **Abort.** Print: *"`.agent-user.md` is missing. Run `/agents:user:init` to capture your voice."* |
|
|
36
|
+
| File exists but empty / no `voice_sample` | **Abort.** Print: *"`.agent-user.md.voice_sample` is empty. Run `/agents:user:update` to add a voice sample."* |
|
|
37
|
+
| File exists with `voice_sample` | Proceed |
|
|
38
|
+
|
|
39
|
+
Schema reference:
|
|
40
|
+
[`agent-user-schema`](../../../docs/contracts/agent-user-schema.md).
|
|
41
|
+
|
|
42
|
+
### 2. Load the style source
|
|
43
|
+
|
|
44
|
+
Read the frontmatter:
|
|
45
|
+
|
|
46
|
+
- `identity.name` / `identity.nickname` — used only for address-form
|
|
47
|
+
decisions (default-to-nickname when set), **not** appended to the
|
|
48
|
+
output.
|
|
49
|
+
- `language` — language of the draft.
|
|
50
|
+
- `style.formality`, `style.pace` — mapped into the engine's
|
|
51
|
+
fingerprint slot:
|
|
52
|
+
|
|
53
|
+
| `.agent-user.md` field | Engine fingerprint slot |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `style.formality: informal` | `vocab_register: casual` |
|
|
56
|
+
| `style.formality: formal` | `vocab_register: professional` |
|
|
57
|
+
| `style.pace: rapid` | `sentence_length_avg: 12` |
|
|
58
|
+
| `style.pace: pragmatic` | `sentence_length_avg: 18` |
|
|
59
|
+
| `style.pace: thorough` | `sentence_length_avg: 28` |
|
|
60
|
+
|
|
61
|
+
- `voice_sample` — the single paste used as the cadence / register
|
|
62
|
+
anchor. Engine matches its tone within ±25 % sentence length.
|
|
63
|
+
|
|
64
|
+
The body `# Notes` section is **ignored** for drafting — it is
|
|
65
|
+
operator notes, not voice signal.
|
|
66
|
+
|
|
67
|
+
### 3. Collect topic + modifiers
|
|
68
|
+
|
|
69
|
+
Per [`write-engine § 2`](../../../docs/contracts/write-engine.md).
|
|
70
|
+
Flag form: `--tone=<formal|casual|neutral>`,
|
|
71
|
+
`--length=<words>`, `--channel=<linkedin-post|tweet|blog|freeform>`,
|
|
72
|
+
`--audience=<text>`. Missing flags → interactive prompt, **one
|
|
73
|
+
question per turn**, in the order Topic → Tone → Length → Channel →
|
|
74
|
+
Audience. Defaults inherit from the engine's per-channel table and
|
|
75
|
+
the formality / pace mapping above.
|
|
76
|
+
|
|
77
|
+
### 4. Negative-constraint pass (skipped)
|
|
78
|
+
|
|
79
|
+
`.agent-user.md` v1 has no `taboos` field. Skip per
|
|
80
|
+
[`write-engine § 3`](../../../docs/contracts/write-engine.md).
|
|
81
|
+
|
|
82
|
+
### 5. Draft
|
|
83
|
+
|
|
84
|
+
Generate the body as a single fenced markdown block per
|
|
85
|
+
[`write-engine § 4`](../../../docs/contracts/write-engine.md). Honour
|
|
86
|
+
the loaded fingerprint (sentence-length ±25 %, formality, pace),
|
|
87
|
+
±15 % length tolerance, write in `language`.
|
|
88
|
+
|
|
89
|
+
### 6. Disclosure footer (omitted — user is the author)
|
|
90
|
+
|
|
91
|
+
**Do not append a footer.** `/post-as:me` is the self-author path;
|
|
92
|
+
the disclosure footer is reserved for third-party voices
|
|
93
|
+
(`/ghostwriter:write`, `/post-as:ghostwriter`). The engine
|
|
94
|
+
contract's footer step (§ 5) is deliberately skipped here.
|
|
95
|
+
|
|
96
|
+
### 7. Print
|
|
97
|
+
|
|
98
|
+
Print the body inside one fenced markdown block. No file writes, no
|
|
99
|
+
commit, no save. The user copies the output manually.
|
|
100
|
+
|
|
101
|
+
## Rules
|
|
102
|
+
|
|
103
|
+
- **Do NOT commit, push, or open a PR.** The user owns the git surface.
|
|
104
|
+
- **Do NOT append a disclosure footer.** This command is the self-author
|
|
105
|
+
path; appending the ghostwriter footer here is wrong by design.
|
|
106
|
+
- **Do NOT consume `personas/*.md` or `agents/ghostwriter/*.md`** —
|
|
107
|
+
those are separate primitives.
|
|
108
|
+
- **Do NOT write the draft to disk.** This command prints only.
|
|
109
|
+
- **Do NOT proceed when `.agent-user.md` is missing or
|
|
110
|
+
`voice_sample` is empty.** Point the user at `/agents:user:init`
|
|
111
|
+
or `/agents:user:update` and abort.
|
|
112
|
+
- **Do NOT bypass the language field.** Draft in
|
|
113
|
+
`.agent-user.md.language` even when the topic prompt is in another
|
|
114
|
+
language (the user will re-prompt if they want a different
|
|
115
|
+
language).
|
|
116
|
+
|
|
117
|
+
## See also
|
|
118
|
+
|
|
119
|
+
- [`write-engine`](../../../docs/contracts/write-engine.md) — shared procedural contract.
|
|
120
|
+
- [`agent-user-schema`](../../../docs/contracts/agent-user-schema.md) — `.agent-user.md` source schema.
|
|
121
|
+
- [`/post-as`](../post-as.md) — parent cluster.
|
|
122
|
+
- [`/post-as:ghostwriter`](ghostwriter.md) — sibling consumer, public-figure voice, mandatory footer.
|
|
123
|
+
- [`/agents:user:init`](../agents/user/init.md) — bootstrap `.agent-user.md`.
|
|
124
|
+
- [`/agents:user:update`](../agents/user/update.md) — refresh `voice_sample`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: post-as
|
|
3
|
+
tier: 2
|
|
4
|
+
description: Consumer-facing write entry points — :me drafts in the maintainer's own voice from .agent-user.md (no disclosure); :ghostwriter is a thin alias for /ghostwriter:write (mandatory disclosure footer).
|
|
5
|
+
cluster: post-as
|
|
6
|
+
type: orchestrator
|
|
7
|
+
disable-model-invocation: true
|
|
8
|
+
suggestion:
|
|
9
|
+
eligible: true
|
|
10
|
+
trigger_description: "write as me, post as me, draft in my voice, draft as ghostwriter, post-as alias"
|
|
11
|
+
trigger_context: "user wants a copyable draft in their own voice (.agent-user.md) or in a captured public-figure voice (/ghostwriter:write alias)"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# /post-as
|
|
15
|
+
|
|
16
|
+
Consumer-facing write cluster. Two thin entry points over the shared
|
|
17
|
+
[`write-engine`](../docs/contracts/write-engine.md):
|
|
18
|
+
|
|
19
|
+
- `/post-as:me` — read `.agent-user.md`, draft in the **maintainer's
|
|
20
|
+
own voice**, no disclosure footer (the user is the author).
|
|
21
|
+
- `/post-as:ghostwriter` — alias for `/ghostwriter:write`, mandatory
|
|
22
|
+
disclosure footer.
|
|
23
|
+
|
|
24
|
+
## Sub-commands
|
|
25
|
+
|
|
26
|
+
| Sub-command | Routes to | Footer |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| `/post-as:me` | `commands/post-as/me.md` | **Omitted** |
|
|
29
|
+
| `/post-as:ghostwriter` | `commands/post-as/ghostwriter.md` (alias → `/ghostwriter:write`) | **Mandatory** |
|
|
30
|
+
|
|
31
|
+
Cluster locked in
|
|
32
|
+
[`command-clusters`](../docs/contracts/command-clusters.md).
|
|
33
|
+
|
|
34
|
+
## Dispatch
|
|
35
|
+
|
|
36
|
+
1. Parse the user's argument: `/post-as:<sub> [args]` or
|
|
37
|
+
`/post-as <sub> [args]`.
|
|
38
|
+
2. Look up the sub-command in the table above.
|
|
39
|
+
3. Load the routed file and follow its `## Steps` section verbatim.
|
|
40
|
+
4. Unknown or missing sub-command → print the table and ask which
|
|
41
|
+
one. **One sub-command per turn**; do not chain.
|
|
42
|
+
|
|
43
|
+
## Rules
|
|
44
|
+
|
|
45
|
+
- **Do NOT commit, push, or open a PR.** The user owns the git surface.
|
|
46
|
+
- **Do NOT consume `personas/*.md`** — those are review-lens voices,
|
|
47
|
+
not author voices.
|
|
48
|
+
- **Do NOT omit the disclosure footer from `:ghostwriter`** — it is
|
|
49
|
+
mandatory on every invocation. `:me` omits it because the user is
|
|
50
|
+
the author.
|
|
51
|
+
- **Edit `.agent-src.uncompressed/` only.** `.agent-src/` and
|
|
52
|
+
`.augment/` regenerate from source.
|
|
53
|
+
|
|
54
|
+
## See also
|
|
55
|
+
|
|
56
|
+
- [`write-engine`](../docs/contracts/write-engine.md) — shared procedural contract.
|
|
57
|
+
- [`/ghostwriter`](ghostwriter.md) — producer side for public-figure profiles.
|
|
58
|
+
- [`agent-user-schema`](../docs/contracts/agent-user-schema.md) — `.agent-user.md` source for `:me`.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Ghostwriter profiles (package source)
|
|
2
|
+
|
|
3
|
+
> Third voice primitive — public-figure writing-style profiles consumed
|
|
4
|
+
> by `/ghostwriter:write` and `/post-as:ghostwriter`. Peer to
|
|
5
|
+
> `personas/*.md` (review-lens) and `.agent-user.md` (maintainer-self).
|
|
6
|
+
|
|
7
|
+
## What ships in this directory
|
|
8
|
+
|
|
9
|
+
- `README.md` — this file.
|
|
10
|
+
- `fictional-fixture-v1.md` — single allowlisted fictional fixture
|
|
11
|
+
demonstrating the schema. **No real-person profiles ever ship here.**
|
|
12
|
+
|
|
13
|
+
That's it. Real-person profiles live in **`agents/ghostwriter/`** in the
|
|
14
|
+
consumer project and are gitignored by default
|
|
15
|
+
(see [`config/gitignore-block.txt`](../../config/gitignore-block.txt)).
|
|
16
|
+
|
|
17
|
+
## Why fictional-only
|
|
18
|
+
|
|
19
|
+
The package is OSS. Shipping a real public figure's writing voice
|
|
20
|
+
with the package would put a defamation / right-of-publicity surface
|
|
21
|
+
on every clone, every fork, every mirror — and the maintainer of this
|
|
22
|
+
package never attested anything about that figure. The user who runs
|
|
23
|
+
`/ghostwriter:fetch` for a real figure attests in their own project,
|
|
24
|
+
and the profile stays local.
|
|
25
|
+
|
|
26
|
+
The fictional fixture exists so:
|
|
27
|
+
|
|
28
|
+
- The schema lint has a positive example to validate against.
|
|
29
|
+
- New contributors can read a complete profile without us inventing
|
|
30
|
+
one in a doc.
|
|
31
|
+
- Tests for the `/ghostwriter:*` cluster have a stable fixture to load.
|
|
32
|
+
|
|
33
|
+
## Adding a new fictional fixture
|
|
34
|
+
|
|
35
|
+
Two-step process — **both required**:
|
|
36
|
+
|
|
37
|
+
1. Add the file stem (without `.md`) to
|
|
38
|
+
[`scripts/ghostwriter_fixture_allowlist.txt`](../../scripts/ghostwriter_fixture_allowlist.txt).
|
|
39
|
+
2. Set `fictional: true` in the frontmatter.
|
|
40
|
+
|
|
41
|
+
`task lint-ghostwriter-source` (runs in `task ci`) fails on:
|
|
42
|
+
|
|
43
|
+
- Any file in this directory whose stem is not on the allowlist.
|
|
44
|
+
- Any allowlisted file missing `fictional: true`.
|
|
45
|
+
- Any consumer-side file under `agents/ghostwriter/` with `fictional: true`
|
|
46
|
+
(fictional profiles belong here, not in consumer trees).
|
|
47
|
+
|
|
48
|
+
New fixtures require reviewer sign-off on the allowlist change.
|
|
49
|
+
|
|
50
|
+
## Schema
|
|
51
|
+
|
|
52
|
+
See [`docs/contracts/ghostwriter-schema.md`](../../docs/contracts/ghostwriter-schema.md)
|
|
53
|
+
for the locked v1 frontmatter, field reference, confidence derivation,
|
|
54
|
+
verification enum, ethics floor, lint rules, and command surface.
|
|
55
|
+
|
|
56
|
+
## See also
|
|
57
|
+
|
|
58
|
+
- [`personas/README.md`](../personas/README.md) — sibling primitive,
|
|
59
|
+
distinct voice axis.
|
|
60
|
+
- [`docs/contracts/agent-user-schema.md`](../../docs/contracts/agent-user-schema.md)
|
|
61
|
+
— the maintainer-self primitive that `/post-as:me` consumes.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1
|
|
3
|
+
fictional: true
|
|
4
|
+
identity:
|
|
5
|
+
name: "Vera Holmwood"
|
|
6
|
+
role_or_title: "fictional novelist and essayist"
|
|
7
|
+
era: "1948–"
|
|
8
|
+
public_figure_category: "public_artist"
|
|
9
|
+
source_urls:
|
|
10
|
+
- "https://example.invalid/holmwood/fictional-interview-2019"
|
|
11
|
+
- "https://example.invalid/holmwood/fictional-essay-collection"
|
|
12
|
+
- "https://example.invalid/holmwood/fictional-lecture-2021"
|
|
13
|
+
fetched_at: "2026-05-15"
|
|
14
|
+
confidence: "med"
|
|
15
|
+
attestation_recorded_at: "2026-05-15T10:00:00Z"
|
|
16
|
+
style:
|
|
17
|
+
fingerprint:
|
|
18
|
+
sentence_length_avg: 19
|
|
19
|
+
vocab_register: "literary"
|
|
20
|
+
opener_patterns:
|
|
21
|
+
- "personal anecdote"
|
|
22
|
+
- "quiet observation of place"
|
|
23
|
+
closer_patterns:
|
|
24
|
+
- "open-ended invitation"
|
|
25
|
+
- "single short sentence pulling the threads together"
|
|
26
|
+
hashtag_rules: "never"
|
|
27
|
+
emoji_rules: "never"
|
|
28
|
+
paragraph_cadence: "long-form, 4–6 sentence paragraphs, occasional one-line break for emphasis"
|
|
29
|
+
free_form_notes: |
|
|
30
|
+
Holmwood (fictional) is the canonical fixture for the ghostwriter
|
|
31
|
+
schema. She tends to weave personal memory with a wider social
|
|
32
|
+
observation, rarely uses imperatives, and almost never names a
|
|
33
|
+
contemporary by name. Tone is reflective, never declarative.
|
|
34
|
+
voice_samples:
|
|
35
|
+
- source_url: "https://example.invalid/holmwood/fictional-interview-2019"
|
|
36
|
+
length_words: 88
|
|
37
|
+
text: |
|
|
38
|
+
The town I grew up in had three bookshops and one cinema. I used
|
|
39
|
+
to think that ratio explained something about us — that we
|
|
40
|
+
preferred the slow argument to the loud one, that we trusted the
|
|
41
|
+
written page over the moving picture. I am not sure I still
|
|
42
|
+
believe that. The bookshops are gone now, and the cinema is a
|
|
43
|
+
pharmacy. What stayed is the habit of reading slowly. Perhaps
|
|
44
|
+
that was the point all along.
|
|
45
|
+
- source_url: "https://example.invalid/holmwood/fictional-essay-collection"
|
|
46
|
+
length_words: 64
|
|
47
|
+
text: |
|
|
48
|
+
A useful sentence does two things at once. It carries a thought,
|
|
49
|
+
and it carries a hesitation about that thought. Sentences that
|
|
50
|
+
only carry the thought are speeches. Sentences that only carry
|
|
51
|
+
the hesitation are notes to oneself. The essay lives between
|
|
52
|
+
them, and the essayist's only real job is to keep the balance
|
|
53
|
+
from tipping either way for too long.
|
|
54
|
+
- source_url: "https://example.invalid/holmwood/fictional-lecture-2021"
|
|
55
|
+
length_words: 52
|
|
56
|
+
text: |
|
|
57
|
+
I was asked, on arriving, what I thought writing was for. I
|
|
58
|
+
answered, as I always answer, that I do not know. What I do know
|
|
59
|
+
is that writing changes the writer more than it changes any
|
|
60
|
+
reader, and that this is not a complaint.
|
|
61
|
+
taboos:
|
|
62
|
+
- "political endorsements"
|
|
63
|
+
- "profanity"
|
|
64
|
+
- "hashtag-driven posts"
|
|
65
|
+
- "second-person imperatives ('you should …')"
|
|
66
|
+
- "naming contemporary writers in a critical context"
|
|
67
|
+
source_provenance:
|
|
68
|
+
count: 3
|
|
69
|
+
last_fetched_at: "2026-05-15"
|
|
70
|
+
types:
|
|
71
|
+
- "interview"
|
|
72
|
+
- "essay"
|
|
73
|
+
- "lecture"
|
|
74
|
+
verification: "fetched"
|
|
75
|
+
last_updated: "2026-05-15"
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
# Notes
|
|
79
|
+
|
|
80
|
+
Holmwood is **fictional**. Every URL in this file uses `example.invalid`,
|
|
81
|
+
the IANA-reserved TLD that never resolves. The fixture exists so the
|
|
82
|
+
ghostwriter schema lint, the write-engine tests, and any future
|
|
83
|
+
contract validators have a complete, stable, non-defamatory example
|
|
84
|
+
to load.
|
|
85
|
+
|
|
86
|
+
Do not use this fixture as a template for adding a real person to
|
|
87
|
+
`.agent-src.uncompressed/ghostwriter/`. Real-person profiles never
|
|
88
|
+
ship with the package — they belong in `agents/ghostwriter/` on the
|
|
89
|
+
consumer side, where they are gitignored by default.
|
|
90
|
+
|
|
91
|
+
If you need a second fictional fixture (for a different
|
|
92
|
+
`public_figure_category` or a different `style.fingerprint` shape),
|
|
93
|
+
add its stem to `scripts/ghostwriter_fixture_allowlist.txt` and submit
|
|
94
|
+
both changes in the same PR.
|
|
@@ -92,3 +92,11 @@ cast (usually Core-6 for review skills, empty for others).
|
|
|
92
92
|
- [`../../docs/contracts/persona-schema.md`](../../docs/contracts/persona-schema.md) — locked schema (Core / Specialist)
|
|
93
93
|
- [`../../docs/guidelines/agent-infra/role-contracts.md`](../../docs/guidelines/agent-infra/role-contracts.md) — workflow modes personas compose with
|
|
94
94
|
- [`../rules/artifact-drafting-protocol.md`](../rules/artifact-drafting-protocol.md) — mandatory per new persona
|
|
95
|
+
|
|
96
|
+
## See also — sibling voice primitives
|
|
97
|
+
|
|
98
|
+
Personas are one of three voice primitives. Same shape (Markdown +
|
|
99
|
+
frontmatter), distinct purpose — **no folding, no shared schema**:
|
|
100
|
+
|
|
101
|
+
- [`../../docs/contracts/agent-user-schema.md`](../../docs/contracts/agent-user-schema.md) — `.agent-user.md`, the maintainer's own voice (`/post-as:me`, no disclosure footer).
|
|
102
|
+
- [`../../docs/contracts/ghostwriter-schema.md`](../../docs/contracts/ghostwriter-schema.md) — `agents/ghostwriter/<slug>.md`, captured public-figure voice (`/ghostwriter:write` / `/post-as:ghostwriter`, mandatory disclosure footer).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Drafting strategic recommendations, executive memos, board decks, or consulting deliverables — cite assumptions; flag low-confidence claims"
|
|
5
|
+
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "strategic recommendation"
|
|
8
|
+
- keyword: "board memo"
|
|
9
|
+
- keyword: "executive summary"
|
|
10
|
+
- keyword: "consulting deliverable"
|
|
11
|
+
- keyword: "go-to-market plan"
|
|
12
|
+
- phrase: "what should we do"
|
|
13
|
+
- phrase: "recommend a strategy"
|
|
14
|
+
routes_to:
|
|
15
|
+
- "skill:stakeholder-tradeoff"
|
|
16
|
+
- "skill:decision-record"
|
|
17
|
+
applies_to_user_types:
|
|
18
|
+
- "consultant"
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Domain Safety — Consulting / Strategic Disclaimer
|
|
22
|
+
|
|
23
|
+
## Iron Law
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
EVERY STRATEGIC RECOMMENDATION CITES ITS LOAD-BEARING ASSUMPTIONS.
|
|
27
|
+
EVERY LOW-CONFIDENCE CLAIM IS LABELED. NO HIDDEN PRIORS.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Strategic advice from an AI without surfaced assumptions is the worst kind of advice: it looks authoritative, but the reader can't see which inputs the recommendation rests on. The disclaimer here is structural, not a footer line — bake assumption-citation into the draft itself.
|
|
31
|
+
|
|
32
|
+
## Required structure for any strategic deliverable
|
|
33
|
+
|
|
34
|
+
Every recommendation must include:
|
|
35
|
+
|
|
36
|
+
1. **Assumptions section.** 3-5 bullets naming the load-bearing priors (market size, competitive response, internal capacity, regulatory stability, customer demand). If any one of these flips, the recommendation flips.
|
|
37
|
+
2. **Confidence label per claim.** High / Medium / Low — verifiable from cited data → High; reasoned but unverified → Medium; speculative → Low.
|
|
38
|
+
3. **Inversion check.** One paragraph: *"This recommendation fails if [X happens]. The early signal to watch is [Y]."*
|
|
39
|
+
|
|
40
|
+
## Disclaimer footer (append in addition to structure)
|
|
41
|
+
|
|
42
|
+
> **AI-generated strategic analysis.** This recommendation was drafted by an AI assistant based on the assumptions stated above. It is one input among several and should not be acted on without human review, validation against current data, and stakeholder consultation. Confidence labels are the AI's self-assessment, not an external audit.
|
|
43
|
+
|
|
44
|
+
German equivalent:
|
|
45
|
+
|
|
46
|
+
> **KI-generierte Strategieanalyse.** Diese Empfehlung wurde von einem KI-Assistenten auf Basis der oben genannten Annahmen erstellt. Sie ist ein Input unter mehreren und sollte nicht ohne menschliche Prüfung, Abgleich mit aktuellen Daten und Stakeholder-Konsultation umgesetzt werden. Konfidenzangaben sind die Selbsteinschätzung der KI, kein externer Audit.
|
|
47
|
+
|
|
48
|
+
## See also
|
|
49
|
+
|
|
50
|
+
- `skill:stakeholder-tradeoff` — competing-lens framing.
|
|
51
|
+
- `skill:decision-record` — ADR pattern for locking the choice.
|
|
52
|
+
- `skill:adversarial-review` — pre-commit stress test on the recommendation.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Drafting investment memos, valuation models, tax positions, or financial-advice-shaped content — require 'not financial advice' disclaimer"
|
|
5
|
+
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "investment memo"
|
|
8
|
+
- keyword: "valuation"
|
|
9
|
+
- keyword: "DCF"
|
|
10
|
+
- keyword: "tax position"
|
|
11
|
+
- keyword: "portfolio allocation"
|
|
12
|
+
- keyword: "should I invest"
|
|
13
|
+
- phrase: "is this a good investment"
|
|
14
|
+
- phrase: "tax implications of"
|
|
15
|
+
routes_to:
|
|
16
|
+
- "skill:dcf-modeling"
|
|
17
|
+
- "skill:scenario-modeling"
|
|
18
|
+
applies_to_user_types:
|
|
19
|
+
- "finance"
|
|
20
|
+
- "founder"
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Domain Safety — Financial Disclaimer
|
|
24
|
+
|
|
25
|
+
## Iron Law
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
EVERY INVESTMENT, VALUATION, OR TAX-SHAPED DRAFT SHIPS WITH A
|
|
29
|
+
"NOT FINANCIAL ADVICE" DISCLAIMER. NO EXCEPTIONS.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The agent is not a registered investment advisor, broker, or tax professional. Outputs that look like advice on buying / selling securities, allocating capital, or claiming tax positions create both regulatory exposure and reader-reliance risk. Append the disclaimer to every financial-shaped artifact.
|
|
33
|
+
|
|
34
|
+
## Disclaimer template (append verbatim or translated)
|
|
35
|
+
|
|
36
|
+
> **Not financial or tax advice.** This analysis was generated by an AI assistant and is provided for informational and educational purposes only. It does not constitute investment, financial, accounting, or tax advice. Past performance does not predict future results. Consult a licensed financial advisor and a qualified tax professional in your jurisdiction before making any investment or tax decision.
|
|
37
|
+
|
|
38
|
+
German equivalent:
|
|
39
|
+
|
|
40
|
+
> **Keine Anlage- oder Steuerberatung.** Diese Analyse wurde von einem KI-Assistenten erstellt und dient ausschließlich zu Informations- und Bildungszwecken. Sie stellt keine Anlage-, Finanz-, Buchhaltungs- oder Steuerberatung dar. Vergangene Wertentwicklung ist keine Garantie für zukünftige Ergebnisse. Konsultieren Sie vor jeder Anlage- oder Steuerentscheidung eine zugelassene Anlageberaterin und eine qualifizierte Steuerexpertin in Ihrer Rechtsordnung.
|
|
41
|
+
|
|
42
|
+
## What "financial-shaped" means
|
|
43
|
+
|
|
44
|
+
- Buy / sell / hold recommendations on any security, crypto, or asset.
|
|
45
|
+
- Valuation outputs (DCF, comps, precedent transactions).
|
|
46
|
+
- Tax position recommendations (election timing, deduction strategy, entity choice).
|
|
47
|
+
- Portfolio allocation suggestions.
|
|
48
|
+
|
|
49
|
+
Not in scope: bookkeeping, expense categorization, runway-cash math — those are operational, not advisory.
|
|
50
|
+
|
|
51
|
+
## See also
|
|
52
|
+
|
|
53
|
+
- `skill:dcf-modeling` — valuation cognition.
|
|
54
|
+
- `skill:runway-cognition` — operational, no disclaimer needed.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Drafting legal briefs, contract redlines, ToS, privacy policies, or any legal-shaped content — require 'not legal advice' disclaimer in output"
|
|
5
|
+
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "legal brief"
|
|
8
|
+
- keyword: "contract redline"
|
|
9
|
+
- keyword: "terms of service"
|
|
10
|
+
- keyword: "privacy policy"
|
|
11
|
+
- keyword: "MSA"
|
|
12
|
+
- keyword: "DPA"
|
|
13
|
+
- phrase: "draft a clause"
|
|
14
|
+
- phrase: "review this contract"
|
|
15
|
+
routes_to:
|
|
16
|
+
- "skill:contracts-cognition"
|
|
17
|
+
applies_to_user_types:
|
|
18
|
+
- "legal"
|
|
19
|
+
- "consultant"
|
|
20
|
+
- "founder"
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Domain Safety — Legal Disclaimer
|
|
24
|
+
|
|
25
|
+
## Iron Law
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
EVERY LEGAL-SHAPED DRAFT SHIPS WITH A "NOT LEGAL ADVICE" DISCLAIMER.
|
|
29
|
+
NO EXCEPTIONS — INTERNAL DRAFTS, REDLINES, OR TEMPLATES INCLUDED.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The agent is not a licensed attorney in any jurisdiction. Outputs that look like legal work product create reliance risk for the reader and unauthorized-practice exposure for the package operator. Append the disclaimer at the end of every legal-shaped artifact.
|
|
33
|
+
|
|
34
|
+
## Disclaimer template (append verbatim or translated)
|
|
35
|
+
|
|
36
|
+
> **Not legal advice.** This draft was generated by an AI assistant and is provided for informational purposes only. It does not constitute legal advice and does not create an attorney-client relationship. Consult a licensed attorney in your jurisdiction before relying on this content for any binding decision.
|
|
37
|
+
|
|
38
|
+
German equivalent:
|
|
39
|
+
|
|
40
|
+
> **Keine Rechtsberatung.** Dieser Entwurf wurde von einem KI-Assistenten erstellt und dient ausschließlich zu Informationszwecken. Er stellt keine Rechtsberatung dar und begründet kein Mandatsverhältnis. Konsultieren Sie vor jeder rechtsverbindlichen Entscheidung eine zugelassene Anwältin oder einen Anwalt in Ihrer Rechtsordnung.
|
|
41
|
+
|
|
42
|
+
## When to skip
|
|
43
|
+
|
|
44
|
+
Never — the disclaimer is non-negotiable on legal-shaped drafts. If the user explicitly says *"this is for an attorney to review, skip the disclaimer"* — still include it; the attorney can strip it. The risk of forgetting outweighs the friction of one paragraph.
|
|
45
|
+
|
|
46
|
+
## See also
|
|
47
|
+
|
|
48
|
+
- `skill:contracts-cognition` — clause-shape + redline priority.
|
|
49
|
+
- `domain-safety-disclaimer-consulting` — strategic-advisory companion.
|