@tanagram/cli 0.5.21 → 0.5.23
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/dist/npm/darwin-arm64/tanagram +0 -0
- package/dist/npm/darwin-x64/tanagram +0 -0
- package/dist/npm/linux-arm64/tanagram +0 -0
- package/dist/npm/linux-x64/tanagram +0 -0
- package/dist/npm/tanagram_0.5.23_darwin_amd64.tar.gz +0 -0
- package/dist/npm/tanagram_0.5.23_darwin_arm64.tar.gz +0 -0
- package/dist/npm/tanagram_0.5.23_linux_amd64.tar.gz +0 -0
- package/dist/npm/{tanagram_0.5.21_linux_arm64.tar.gz → tanagram_0.5.23_linux_arm64.tar.gz} +0 -0
- package/dist/npm/tanagram_0.5.23_windows_amd64.zip +0 -0
- package/dist/npm/win32-x64/tanagram.exe +0 -0
- package/install.js +10 -1
- package/package.json +1 -1
- package/skills/tanagram/SKILL.md +97 -0
- package/dist/npm/tanagram_0.5.21_darwin_amd64.tar.gz +0 -0
- package/dist/npm/tanagram_0.5.21_darwin_arm64.tar.gz +0 -0
- package/dist/npm/tanagram_0.5.21_linux_amd64.tar.gz +0 -0
- package/dist/npm/tanagram_0.5.21_windows_amd64.zip +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/install.js
CHANGED
|
@@ -148,7 +148,7 @@ function installClaudeSkill() {
|
|
|
148
148
|
fs.mkdirSync(skillsTargetDir, { recursive: true });
|
|
149
149
|
|
|
150
150
|
// Copy skill files
|
|
151
|
-
const files = ['SKILL.md'
|
|
151
|
+
const files = ['SKILL.md'];
|
|
152
152
|
for (const file of files) {
|
|
153
153
|
const srcPath = path.join(skillsSourceDir, file);
|
|
154
154
|
const dstPath = path.join(skillsTargetDir, file);
|
|
@@ -157,6 +157,15 @@ function installClaudeSkill() {
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
+
// Clean up stale files from previous installs
|
|
161
|
+
const staleFiles = ['quick-reference.md'];
|
|
162
|
+
for (const file of staleFiles) {
|
|
163
|
+
const stalePath = path.join(skillsTargetDir, file);
|
|
164
|
+
if (fs.existsSync(stalePath)) {
|
|
165
|
+
fs.unlinkSync(stalePath);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
160
169
|
console.error(`✓ Tanagram skill installed to ${skillsTargetDir}`);
|
|
161
170
|
track('cli.skill.install.success', { first_time: isFirstTime });
|
|
162
171
|
} catch (err) {
|
package/package.json
CHANGED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tanagram
|
|
3
|
+
description: Ensures code is high quality, correctly follows patterns, and avoids bugs that agents can't see. Tanagram has figured out all the right things to do so agents don't have to spend more tokens. ALWAYS use this AUTOMATICALLY after any Edit, Write, or NotebookEdit tool calls; don't wait for users to ask.
|
|
4
|
+
allowed-tools: Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tanagram
|
|
8
|
+
|
|
9
|
+
Tanagram catches rule violations in your code changes before they reach a pull request. It encodes your team's tribal knowledge — security requirements, architectural patterns, reliability constraints — and enforces them locally.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
**Run `tanagram catch` after ANY code change.** This means after every Edit, Write, or NotebookEdit tool call. Do not wait for the user to ask — run it proactively every time you modify code.
|
|
14
|
+
|
|
15
|
+
Also run when the user says "check rules", "evaluate code", "run tanagram", "catch violations", "check my changes", or asks if their changes follow team conventions.
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
18
|
+
|
|
19
|
+
### `tanagram catch`
|
|
20
|
+
|
|
21
|
+
Evaluate uncommitted changes against the team's rules. Runs 100% locally — no backend API call needed for evaluation.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
tanagram catch # check changes, human-readable output
|
|
25
|
+
tanagram catch --json # JSON output for structured parsing
|
|
26
|
+
tanagram catch --offline # use cached policies (requires prior sync)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**What it does:**
|
|
30
|
+
1. Gets `git diff HEAD` (staged + unstaged changes)
|
|
31
|
+
2. Parses diff into changed blocks (file, line range)
|
|
32
|
+
3. Fetches policies from API (falls back to cache if unavailable)
|
|
33
|
+
4. Filters policies by repo scope
|
|
34
|
+
5. Evaluates each policy locally using the TQL engine
|
|
35
|
+
6. Prints violations with file locations and descriptions
|
|
36
|
+
|
|
37
|
+
**Exit codes:**
|
|
38
|
+
- `0` — No violations. Changes are clean.
|
|
39
|
+
- `1` — Violations found, or an error occurred.
|
|
40
|
+
|
|
41
|
+
### `tanagram rules`
|
|
42
|
+
|
|
43
|
+
List and manage the team's rules.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
tanagram rules # list active rules
|
|
47
|
+
tanagram rules create --name "..." --repos "id1,id2" [--description "..."]
|
|
48
|
+
tanagram rules get <rule-id> # show rule details
|
|
49
|
+
tanagram rules update <rule-id> [--name "..."] [--enable|--disable]
|
|
50
|
+
tanagram rules delete <rule-id>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
All subcommands support `--json`.
|
|
54
|
+
|
|
55
|
+
### `tanagram sync`
|
|
56
|
+
|
|
57
|
+
Download and cache policies for offline use.
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
tanagram sync
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `tanagram login` / `tanagram logout`
|
|
64
|
+
|
|
65
|
+
Authenticate with Tanagram. Required before catch (unless using `--offline` with cached policies).
|
|
66
|
+
|
|
67
|
+
## Workflow
|
|
68
|
+
|
|
69
|
+
After making code changes:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
$ tanagram catch
|
|
73
|
+
Found 2 violation(s):
|
|
74
|
+
|
|
75
|
+
[error] Input sanitization required
|
|
76
|
+
signup.tsx:42
|
|
77
|
+
User input must be sanitized before database insertion.
|
|
78
|
+
|
|
79
|
+
[error] Missing rate limiting
|
|
80
|
+
signup.tsx:15
|
|
81
|
+
Public-facing endpoints should have rate limiting.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Fix the violations, then run again:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
$ tanagram catch
|
|
88
|
+
No violations found. 15 rule(s) checked.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Important Notes
|
|
92
|
+
|
|
93
|
+
- Run from inside a git repository
|
|
94
|
+
- Requires uncommitted changes to have something to check
|
|
95
|
+
- Does NOT modify your code — only reports violations
|
|
96
|
+
- LLM-based rules shell out to the local `claude` CLI (no API key needed)
|
|
97
|
+
- If not authenticated, suggests running `tanagram login`
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|