portable-agent-layer 0.60.1 → 0.61.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.
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: humanize
|
|
3
|
+
description: "Rewrites text to remove AI slop and make it sound human: eliminates em-dashes and en-dashes, LLM tell-words (delve, leverage, robust, seamless), 'not just X, it's Y' constructions, rule-of-three padding, boilerplate openers/closers, hedging, and decorative emoji, while preserving meaning and voice. Use when asked to humanize text, de-slop, remove AI dashes or em-dashes, strip AI tells, make writing sound human, or clean AI-generated prose."
|
|
4
|
+
argument-hint: <text, or a file path, or empty to rewrite the previous message>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Humanize
|
|
8
|
+
|
|
9
|
+
Rewrite the given content to strip AI-writing tells and return a human-sounding version. This is a rewrite, not a summary: preserve the author's meaning, facts, argument, structure, and voice. Never add new claims.
|
|
10
|
+
|
|
11
|
+
## Input handling
|
|
12
|
+
|
|
13
|
+
Resolve the input in this order:
|
|
14
|
+
|
|
15
|
+
1. **File path argument**: if `$ARGUMENTS` is a path to an existing file, read it. Ask the user whether to rewrite the file in place or output the rewrite in the response; if the request already made this clear, skip the question.
|
|
16
|
+
2. **Inline text argument**: if `$ARGUMENTS` is text, rewrite that text.
|
|
17
|
+
3. **No argument**: rewrite the most recent generated content or the immediately preceding message in the conversation.
|
|
18
|
+
|
|
19
|
+
## Rule 1: zero AI dashes (the headline rule)
|
|
20
|
+
|
|
21
|
+
The output must contain **zero em-dashes (—) and zero en-dashes (–) used as sentence punctuation**. Resolve every one by exactly one of:
|
|
22
|
+
|
|
23
|
+
- Splitting into two sentences.
|
|
24
|
+
- Replacing with a comma.
|
|
25
|
+
- Wrapping the aside in parentheses.
|
|
26
|
+
- Replacing with a colon (when the dash introduces an explanation or list).
|
|
27
|
+
- Restructuring the clause so no separator is needed.
|
|
28
|
+
|
|
29
|
+
Pick whichever reads most naturally per instance; do not mechanically apply one substitute everywhere. A plain hyphen inside a genuine compound word ("well-known", "off-the-shelf") is fine. A spaced or unspaced dash joining clauses is not. Numeric ranges ("pages 3–7") may keep an en-dash only in technical or reference contexts; in prose, prefer "to".
|
|
30
|
+
|
|
31
|
+
## Workflow
|
|
32
|
+
|
|
33
|
+
1. Resolve the input per **Input handling** above.
|
|
34
|
+
2. Scan the content and inventory every violation of the rules below before rewriting, so you can report counts afterward.
|
|
35
|
+
3. Rewrite the content, applying all of the following transformations:
|
|
36
|
+
- **Dashes**: apply Rule 1 to every em-dash and en-dash.
|
|
37
|
+
- **Antithesis constructions**: rewrite every "It's not just X, it's Y" and "not only… but also" into a direct statement of what the thing is.
|
|
38
|
+
- **Rule-of-three padding**: collapse empty tricolons ("faster, cheaper, and more scalable" when only one quality matters) down to the item(s) that carry real information.
|
|
39
|
+
- **LLM tell-words**: replace with a plain equivalent: delve (dig into, examine), tapestry, testament, underscore (show), pivotal, crucial (important, or cut), robust (reliable, or cut), seamless (cut, or state the actual behavior), elevate (improve), unlock, harness, leverage (use), navigate when figurative (handle, deal with), realm (area), landscape (field, market, or cut), ever-evolving, fast-paced (cut), game-changer, foster (encourage, or cut), embark (start), myriad, plethora (many), boasts (has), meticulous (careful).
|
|
40
|
+
- **Boilerplate openers/closers**: delete "In today's world", "In conclusion", "Overall", "At the end of the day", "Let's dive in", "It's worth noting that", "Needless to say", and equivalents. If a closer carried a real point, keep the point and drop the frame.
|
|
41
|
+
- **Hedging and throat-clearing**: cut filler that adds no information ("It's important to remember that", "Generally speaking", "In many ways", "Arguably").
|
|
42
|
+
- **Inflation**: remove reflexive superlatives and marketing adjectives ("incredible", "powerful", "cutting-edge", "world-class"). Prefer a concrete claim over vague praise; if no concrete claim exists in the source, drop the praise rather than invent one.
|
|
43
|
+
- **Decoration**: strip decorative emoji and gratuitous bold sprinkled through prose. Keep bold only where it marks genuine structure (a defined term, a table header, a key already emphasized deliberately and sparingly).
|
|
44
|
+
4. Verify: search the rewritten output for `—` and `–` and confirm zero sentence-punctuation hits remain.
|
|
45
|
+
5. Verify meaning: confirm the rewrite makes the same claims as the original, in the same order, at roughly the same length. If a sentence lost its point during de-slopping, restore the point in plain words.
|
|
46
|
+
6. If operating on a file and the user chose in-place editing, write the rewrite back to the file.
|
|
47
|
+
|
|
48
|
+
## Output format
|
|
49
|
+
|
|
50
|
+
Return, in order:
|
|
51
|
+
|
|
52
|
+
1. The fully rewritten content (or, if a file was edited in place, state which file was edited instead of repeating the content).
|
|
53
|
+
2. A short bullet list of changes by category with counts, for example:
|
|
54
|
+
- removed 7 em-dashes (4 split into sentences, 2 commas, 1 colon)
|
|
55
|
+
- replaced "leverage" → "use" ×3, "seamless" cut ×2
|
|
56
|
+
- rewrote 2 "not just X, it's Y" constructions
|
|
57
|
+
- cut 2 boilerplate closers, 1 opener
|
|
58
|
+
- stripped 5 decorative emoji
|
|
59
|
+
|
|
60
|
+
## When to use
|
|
61
|
+
|
|
62
|
+
- The user asks to humanize, de-slop, or "make it sound human / less like AI".
|
|
63
|
+
- The user asks to remove em-dashes, AI dashes, or AI tells from text.
|
|
64
|
+
- The user wants AI-generated prose cleaned up before publishing, without changing what it says.
|
|
65
|
+
|
|
66
|
+
## Do NOT use
|
|
67
|
+
|
|
68
|
+
- To condense or shorten content: that is `summarize`. Humanize preserves length and structure.
|
|
69
|
+
- To pull insights, quotes, or ideas out of content: that is `extract-wisdom`. Humanize returns the whole text, rewritten in place.
|
|
70
|
+
- To change the argument, add claims, or restructure a document. Humanize changes wording, never meaning.
|
|
@@ -40,6 +40,7 @@ Thinking-only. No tool calls except context recovery (Grep/Glob/Read).
|
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
# If cwd matches a registered project — read its open ISCs (Ideal State Criteria):
|
|
43
|
+
# list-isc returns OPEN criteria by default; pass --all or --closed to see finished ones.
|
|
43
44
|
bun ~/.pal/tools/project.ts list-isc <project-name>
|
|
44
45
|
|
|
45
46
|
# If this is ad-hoc work with no registered project — scaffold a task ISA:
|
package/package.json
CHANGED
|
@@ -421,13 +421,27 @@ function cmdReopenIsc(args: string[]): void {
|
|
|
421
421
|
ok({ checked: false, id });
|
|
422
422
|
}
|
|
423
423
|
|
|
424
|
+
function selectIscs(all: Isc[], flags: Set<string>): Isc[] {
|
|
425
|
+
if (flags.has("--all")) return all;
|
|
426
|
+
if (flags.has("--closed")) return all.filter((i) => i.checked);
|
|
427
|
+
return all.filter((i) => !i.checked);
|
|
428
|
+
}
|
|
429
|
+
|
|
424
430
|
function cmdListIsc(args: string[]): void {
|
|
425
|
-
const
|
|
431
|
+
const flags = new Set(args.filter((a) => a.startsWith("--")));
|
|
432
|
+
const name =
|
|
433
|
+
args.find((a) => !a.startsWith("--")) ??
|
|
434
|
+
fail("Usage: list-isc <name> [--all | --closed]");
|
|
426
435
|
const p = requireProject(name);
|
|
427
|
-
const
|
|
428
|
-
const open =
|
|
429
|
-
|
|
430
|
-
|
|
436
|
+
const all = parseIscs(p.criteria ?? "");
|
|
437
|
+
const open = all.filter((i) => !i.checked).length;
|
|
438
|
+
ok({
|
|
439
|
+
name,
|
|
440
|
+
total: all.length,
|
|
441
|
+
open,
|
|
442
|
+
done: all.length - open,
|
|
443
|
+
iscs: selectIscs(all, flags),
|
|
444
|
+
});
|
|
431
445
|
}
|
|
432
446
|
|
|
433
447
|
// ── Task ISA (work/) ──────────────────────────────────────────────
|
|
@@ -509,7 +523,7 @@ Commands:
|
|
|
509
523
|
add-isc <name> "title" append a new open ISC to Criteria
|
|
510
524
|
complete-isc <name> <id> mark ISC-N as done
|
|
511
525
|
reopen-isc <name> <id> reopen ISC-N (mark not done)
|
|
512
|
-
list-isc <name>
|
|
526
|
+
list-isc <name> [--all | --closed] list open ISCs (default); --all or --closed for done
|
|
513
527
|
isa-init <name> mark project as ISA-initialized
|
|
514
528
|
scaffold-task-isa <title> create a one-shot task ISA in memory/work/
|
|
515
529
|
complete-task-isa <slug> mark a task ISA as complete
|