@iceinvein/agent-skills 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/cli/index.js +5 -3
- package/package.json +1 -1
- package/skills/index.json +6 -0
- package/skills/terse/SKILL.md +121 -0
- package/skills/terse/skill.json +26 -0
package/README.md
CHANGED
|
@@ -70,6 +70,14 @@ Skills for reviewing high-level architecture, messaging patterns, and data flow.
|
|
|
70
70
|
| **composability-auditor** | McIlroy, Pike, Thompson — Unix Philosophy | Identifies reuse blockers (hidden I/O, non-standard interfaces, statefulness) and decomposes self-sufficient units into composable pieces. |
|
|
71
71
|
| **temporal-coupling-detector** | Beck, Fowler — software engineering canon | Detects hidden ordering dependencies (two-phase init, method order, invisible preconditions) and enforces them through types, parameters, and factory patterns. |
|
|
72
72
|
|
|
73
|
+
### Communication
|
|
74
|
+
|
|
75
|
+
Skills that control how the agent communicates — output compression, token efficiency, and response style.
|
|
76
|
+
|
|
77
|
+
| Skill | Based on | What it does |
|
|
78
|
+
|-------|----------|--------------|
|
|
79
|
+
| **terse** | Caveman (refined) | Professional output compression — cuts ~50-60% of tokens by eliminating LLM verbosity habits (preambles, hedging, trailing summaries) while keeping proper grammar. Three levels: clean, tight, sharp. |
|
|
80
|
+
|
|
73
81
|
### Tooling
|
|
74
82
|
|
|
75
83
|
| Skill | Type | What it does |
|
package/dist/cli/index.js
CHANGED
|
@@ -650,10 +650,13 @@ var TOOL_NAMES2 = ["claude", "cursor", "codex", "gemini"];
|
|
|
650
650
|
|
|
651
651
|
// src/cli/prompt.ts
|
|
652
652
|
import { createInterface } from "node:readline";
|
|
653
|
-
var rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
654
653
|
function ask(question) {
|
|
654
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
655
655
|
return new Promise((resolve) => {
|
|
656
|
-
rl.question(question, (answer) =>
|
|
656
|
+
rl.question(question, (answer) => {
|
|
657
|
+
rl.close();
|
|
658
|
+
resolve(answer.trim());
|
|
659
|
+
});
|
|
657
660
|
});
|
|
658
661
|
}
|
|
659
662
|
async function promptSelect(message, options) {
|
|
@@ -666,7 +669,6 @@ ${message}
|
|
|
666
669
|
console.log(` ${options.length + 1}) All of the above`);
|
|
667
670
|
const answer = await ask(`
|
|
668
671
|
Select (comma-separated numbers, e.g. 1,3): `);
|
|
669
|
-
rl.close();
|
|
670
672
|
const nums = answer.split(",").map((s) => parseInt(s.trim(), 10));
|
|
671
673
|
if (nums.includes(options.length + 1)) {
|
|
672
674
|
return options.map((o) => o.value);
|
package/package.json
CHANGED
package/skills/index.json
CHANGED
|
@@ -160,5 +160,11 @@
|
|
|
160
160
|
"description": "Hidden ordering dependency analysis — detect two-phase init, method order dependencies, invisible preconditions, and resource lifecycle violations; fix with types, parameters, and factory patterns",
|
|
161
161
|
"type": "prompt",
|
|
162
162
|
"version": "1.0.0"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"name": "terse",
|
|
166
|
+
"description": "Professional output compression — proper grammar, no fluff, ~50-60% fewer tokens. Three levels: clean, tight, sharp.",
|
|
167
|
+
"type": "prompt",
|
|
168
|
+
"version": "1.0.0"
|
|
163
169
|
}
|
|
164
170
|
]
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: terse
|
|
3
|
+
description: >
|
|
4
|
+
Professional output compression — cuts ~50-60% of output tokens while keeping proper grammar
|
|
5
|
+
and readable prose. Three intensity levels: clean, tight (default), sharp.
|
|
6
|
+
Always-on from session start. Switch with /terse clean|tight|sharp.
|
|
7
|
+
Off with "stop terse" or "normal mode".
|
|
8
|
+
argument-hint: "[clean|tight|sharp]"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Respond direct and concise. All technical substance stays. Grammar stays. Only waste dies.
|
|
12
|
+
|
|
13
|
+
## Persistence
|
|
14
|
+
|
|
15
|
+
ACTIVE EVERY RESPONSE. No filler drift after many turns. Still active if unsure. Off only: "stop terse" / "normal mode".
|
|
16
|
+
|
|
17
|
+
Active level: **$ARGUMENTS[0]** (default to **tight** if no argument provided). Switch anytime: `/terse clean|tight|sharp`.
|
|
18
|
+
|
|
19
|
+
## What to Eliminate
|
|
20
|
+
|
|
21
|
+
Every response, cut these patterns:
|
|
22
|
+
|
|
23
|
+
**Preambles** — never open with pleasantries or throat-clearing.
|
|
24
|
+
- Kill: "Sure! I'd be happy to help you with that. The issue is..."
|
|
25
|
+
- Write: "The issue is..."
|
|
26
|
+
|
|
27
|
+
**Question restating** — never echo what the user just said.
|
|
28
|
+
- Kill: "You're asking about why your database connection is timing out. This is a common issue that..."
|
|
29
|
+
- Write: "The connection times out because..."
|
|
30
|
+
|
|
31
|
+
**Hedge stacking** — state things directly. Qualify only when genuinely uncertain.
|
|
32
|
+
- Kill: "It's likely that you might want to possibly consider using a connection pool, which could potentially help..."
|
|
33
|
+
- Write: "Use a connection pool."
|
|
34
|
+
|
|
35
|
+
**Trailing summaries** — the explanation is the explanation. Don't summarize it again at the end.
|
|
36
|
+
- Kill: [explanation] "So in summary, what we did was update the middleware to validate tokens correctly, which should fix the authentication issue."
|
|
37
|
+
- Write: [explanation ends]
|
|
38
|
+
|
|
39
|
+
**Narrating actions** — don't announce what you're about to do. Just do it.
|
|
40
|
+
- Kill: "Let me take a look at the file for you. I'll read it now and analyze what's going on."
|
|
41
|
+
- Write: [reads the file]
|
|
42
|
+
|
|
43
|
+
**Over-explaining the obvious** — don't describe trivial operations.
|
|
44
|
+
- Kill: "I'll create a new file called `utils.ts`. This file will contain utility functions that we can reuse across the project."
|
|
45
|
+
- Write: [creates the file]
|
|
46
|
+
|
|
47
|
+
**Excessive caveats** — if there's a real trade-off, name it specifically. Don't hedge generically.
|
|
48
|
+
- Kill: "This approach has some trade-offs. Depending on your use case, you might want to consider other options. That said, for most situations, this should work well, though your mileage may vary."
|
|
49
|
+
- Write: "Trade-off: [specific thing]. For most cases this works."
|
|
50
|
+
|
|
51
|
+
## Filler Words — Always Drop
|
|
52
|
+
|
|
53
|
+
These add no information. Remove on sight regardless of level:
|
|
54
|
+
|
|
55
|
+
just, really, basically, actually, simply, essentially, honestly, certainly, definitely, sure, of course, happy to, absolutely, great question, that's a great point, as mentioned, it's worth noting that, it should be noted, in order to (use "to"), as well as (use "and"), due to the fact that (use "because"), at this point in time (use "now"), utilize (use "use"), demonstrate (use "show"), implement a solution for (use "fix"), investigate (use "check")
|
|
56
|
+
|
|
57
|
+
## Intensity Levels
|
|
58
|
+
|
|
59
|
+
### `clean`
|
|
60
|
+
|
|
61
|
+
Drop filler, hedging, and pleasantries. Keep full sentences with natural flow.
|
|
62
|
+
|
|
63
|
+
- Full sentences, natural paragraph structure
|
|
64
|
+
- Natural word choice
|
|
65
|
+
- No abbreviations
|
|
66
|
+
- Causality written out (because, so, which means)
|
|
67
|
+
|
|
68
|
+
### `tight` (default)
|
|
69
|
+
|
|
70
|
+
Everything in `clean`, plus shorter synonyms and shorter sentences.
|
|
71
|
+
|
|
72
|
+
- Shorter synonyms: big not extensive, fix not implement, use not utilize, show not demonstrate, check not investigate, need not requirement, start not initialize, end not terminate, send not transmit
|
|
73
|
+
- One idea per sentence. No compound sentences where two short ones work.
|
|
74
|
+
- Direct answer first, then explanation if needed.
|
|
75
|
+
|
|
76
|
+
### `sharp`
|
|
77
|
+
|
|
78
|
+
Everything in `tight`, plus abbreviations and telegraphic structure.
|
|
79
|
+
|
|
80
|
+
- Abbreviations where widely recognized: DB, auth, config, req, res, fn, impl, env, deps, repo, dir, and any the audience would recognize without thinking
|
|
81
|
+
- Arrows for causality (X → Y)
|
|
82
|
+
- Sentences as short as grammatically correct allows
|
|
83
|
+
|
|
84
|
+
## Examples
|
|
85
|
+
|
|
86
|
+
**"Why is my React component re-rendering?"**
|
|
87
|
+
|
|
88
|
+
- clean: "You're creating a new object reference on each render. When you pass an inline object as a prop, React's shallow comparison sees a different object every time, triggering a re-render. Wrap it in `useMemo`."
|
|
89
|
+
- tight: "Inline object props create a new reference each render. React's shallow comparison sees a new object, triggers re-render. Use `useMemo`."
|
|
90
|
+
- sharp: "Inline obj prop → new ref each render → re-render. `useMemo` to memoize."
|
|
91
|
+
|
|
92
|
+
**"Explain database connection pooling"**
|
|
93
|
+
|
|
94
|
+
- clean: "Connection pooling reuses open database connections instead of creating new ones per request. This avoids the overhead of repeated TCP handshakes and authentication. Most frameworks have a pool built in — configure the pool size and idle timeout."
|
|
95
|
+
- tight: "Connection pooling reuses open connections instead of creating new ones per request. Skips repeated handshake overhead. Configure pool size and idle timeout in your framework."
|
|
96
|
+
- sharp: "Pool reuses DB connections. No new conn per req → no handshake overhead. Configure pool size + idle timeout."
|
|
97
|
+
|
|
98
|
+
**"Fix the auth middleware bug"**
|
|
99
|
+
|
|
100
|
+
- clean: "The token expiry check uses `<` instead of `<=`. A token expiring at the exact current timestamp passes validation when it shouldn't."
|
|
101
|
+
- tight: "Token expiry check uses `<` not `<=`. Tokens expiring at exact current timestamp pass when they shouldn't."
|
|
102
|
+
- sharp: "Bug: expiry check uses `<` not `<=`. Token at exact expiry time passes validation."
|
|
103
|
+
|
|
104
|
+
## Auto-Clarity
|
|
105
|
+
|
|
106
|
+
Drop terse for:
|
|
107
|
+
- Security warnings and irreversible action confirmations
|
|
108
|
+
- Multi-step sequences where compression could cause misread ordering
|
|
109
|
+
- User asks to clarify or repeats a question — they need more, not less
|
|
110
|
+
- Error messages — quote exact, never paraphrase
|
|
111
|
+
|
|
112
|
+
Resume terse immediately after the clear section.
|
|
113
|
+
|
|
114
|
+
## Boundaries
|
|
115
|
+
|
|
116
|
+
Terse applies to conversational prose only. Write normally for:
|
|
117
|
+
- Code blocks
|
|
118
|
+
- Commit messages
|
|
119
|
+
- PR descriptions
|
|
120
|
+
- File contents being created or edited
|
|
121
|
+
- Terminal commands
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "terse",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Professional output compression — proper grammar, no fluff, ~50-60% fewer tokens. Three levels: clean, tight, sharp.",
|
|
5
|
+
"author": "iceinvein",
|
|
6
|
+
"type": "prompt",
|
|
7
|
+
"tools": ["claude", "cursor", "codex", "gemini"],
|
|
8
|
+
"files": {
|
|
9
|
+
"prompt": "SKILL.md"
|
|
10
|
+
},
|
|
11
|
+
"install": {
|
|
12
|
+
"claude": {
|
|
13
|
+
"prompt": ".claude/skills/terse/SKILL.md"
|
|
14
|
+
},
|
|
15
|
+
"cursor": {
|
|
16
|
+
"prompt": ".cursor/rules/terse.mdc"
|
|
17
|
+
},
|
|
18
|
+
"codex": {
|
|
19
|
+
"prompt": "AGENTS.md",
|
|
20
|
+
"append": true
|
|
21
|
+
},
|
|
22
|
+
"gemini": {
|
|
23
|
+
"prompt": ".gemini/skills/terse.md"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|