@rmyndharis/aimhooman 0.2.0 → 0.3.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.
- package/.agents/rules/aimhooman.md +9 -6
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.clinerules/aimhooman.md +9 -6
- package/.codex-plugin/plugin.json +3 -3
- package/.cursor/rules/aimhooman.mdc +10 -7
- package/.github/copilot-instructions.md +9 -6
- package/.kiro/steering/aimhooman.md +9 -6
- package/.windsurf/rules/aimhooman.md +9 -6
- package/AGENTS.md +9 -6
- package/CHANGELOG.md +111 -0
- package/CONTRIBUTING.md +2 -3
- package/GEMINI.md +9 -6
- package/README.md +57 -376
- package/SECURITY.md +6 -4
- package/bin/aimhooman.mjs +134 -143
- package/docs/ai-artifacts.gitignore +63 -0
- package/docs/catalog.md +41 -0
- package/docs/cli-reference.md +114 -0
- package/docs/design/frictionless-enforcement.md +27 -17
- package/docs/faq.md +60 -0
- package/docs/integrations.md +108 -0
- package/docs/policy.md +82 -0
- package/docs/secrets.md +83 -0
- package/hooks/hooks.json +1 -1
- package/package.json +10 -2
- package/rules/paths.json +0 -114
- package/schemas/overrides.schema.json +4 -1
- package/skills/aimhooman/SKILL.md +11 -8
- package/src/args.mjs +2 -7
- package/src/exclude.mjs +2 -2
- package/src/gitx.mjs +1 -13
- package/src/hook.mjs +44 -12
- package/src/report.mjs +17 -41
- package/src/scan-session.mjs +15 -22
- package/src/scan-target.mjs +10 -10
- package/src/scan.mjs +9 -24
- package/src/state.mjs +104 -15
- package/rules/secrets.json +0 -96
|
@@ -12,13 +12,16 @@ Its policy:
|
|
|
12
12
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
13
13
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
14
14
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
15
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
-
If one is staged, unstage it and keep it out of Git
|
|
15
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
17
|
+
instead.
|
|
17
18
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
18
19
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
19
20
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
20
21
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
21
|
-
SendGrid). Public certificates are allowed.
|
|
22
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
23
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
24
|
+
the right backstop for it.
|
|
22
25
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
23
26
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
24
27
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -49,7 +52,7 @@ npm test
|
|
|
49
52
|
npm run test:coverage
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
aimhooman also enforces
|
|
53
|
-
violation to fix, not a check to bypass. The rule
|
|
54
|
-
ship.
|
|
55
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
56
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
57
|
+
is simple: AI works, hoomans ship.
|
|
55
58
|
<!-- aimhooman:ruleset-end -->
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
"owner": {
|
|
4
4
|
"name": "aimhooman"
|
|
5
5
|
},
|
|
6
|
-
"description": "AI works. Hoomans ship. Keep AI session files
|
|
6
|
+
"description": "AI works. Hoomans ship. Keep AI session files and attribution out of your commits.",
|
|
7
7
|
"plugins": [
|
|
8
8
|
{
|
|
9
9
|
"name": "aimhooman",
|
|
10
10
|
"source": "./",
|
|
11
|
-
"description": "Keeps AI session files
|
|
12
|
-
"version": "0.
|
|
11
|
+
"description": "Keeps AI session files and unwanted attribution out at the agent and Git boundary.",
|
|
12
|
+
"version": "0.3.1",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"keywords": [
|
|
15
15
|
"git",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aimhooman",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "AI works. Hoomans ship. Keeps AI session files
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "AI works. Hoomans ship. Keeps AI session files and unwanted attribution out at the agent and Git boundary.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "aimhooman"
|
|
7
7
|
},
|
package/.clinerules/aimhooman.md
CHANGED
|
@@ -12,13 +12,16 @@ Its policy:
|
|
|
12
12
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
13
13
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
14
14
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
15
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
-
If one is staged, unstage it and keep it out of Git
|
|
15
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
17
|
+
instead.
|
|
17
18
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
18
19
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
19
20
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
20
21
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
21
|
-
SendGrid). Public certificates are allowed.
|
|
22
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
23
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
24
|
+
the right backstop for it.
|
|
22
25
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
23
26
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
24
27
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -49,7 +52,7 @@ npm test
|
|
|
49
52
|
npm run test:coverage
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
aimhooman also enforces
|
|
53
|
-
violation to fix, not a check to bypass. The rule
|
|
54
|
-
ship.
|
|
55
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
56
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
57
|
+
is simple: AI works, hoomans ship.
|
|
55
58
|
<!-- aimhooman:ruleset-end -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aimhooman",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "AI works. Hoomans ship. Keeps AI session files
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "AI works. Hoomans ship. Keeps AI session files and unwanted attribution out at the agent and Git boundary.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "aimhooman maintainers",
|
|
7
7
|
"email": "yudhi@rmyndharis.com",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"interface": {
|
|
20
20
|
"displayName": "aimhooman",
|
|
21
21
|
"shortDescription": "Keep AI tooling residue out of Git",
|
|
22
|
-
"longDescription": "Detects AI session files
|
|
22
|
+
"longDescription": "Detects AI session files and unwanted attribution before they enter Git history.",
|
|
23
23
|
"developerName": "aimhooman maintainers",
|
|
24
24
|
"category": "Developer Tools",
|
|
25
25
|
"capabilities": [
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: aimhooman - keep AI session files
|
|
2
|
+
description: aimhooman - keep AI session files and unwanted AI attribution out of Git.
|
|
3
3
|
globs:
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
---
|
|
@@ -18,13 +18,16 @@ Its policy:
|
|
|
18
18
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
19
19
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
20
20
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
21
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
22
|
-
If one is staged, unstage it and keep it out of Git
|
|
21
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
22
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
23
|
+
instead.
|
|
23
24
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
24
25
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
25
26
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
26
27
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
27
|
-
SendGrid). Public certificates are allowed.
|
|
28
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
29
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
30
|
+
the right backstop for it.
|
|
28
31
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
29
32
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
30
33
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -55,7 +58,7 @@ npm test
|
|
|
55
58
|
npm run test:coverage
|
|
56
59
|
```
|
|
57
60
|
|
|
58
|
-
aimhooman also enforces
|
|
59
|
-
violation to fix, not a check to bypass. The rule
|
|
60
|
-
ship.
|
|
61
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
62
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
63
|
+
is simple: AI works, hoomans ship.
|
|
61
64
|
<!-- aimhooman:ruleset-end -->
|
|
@@ -12,13 +12,16 @@ Its policy:
|
|
|
12
12
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
13
13
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
14
14
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
15
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
-
If one is staged, unstage it and keep it out of Git
|
|
15
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
17
|
+
instead.
|
|
17
18
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
18
19
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
19
20
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
20
21
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
21
|
-
SendGrid). Public certificates are allowed.
|
|
22
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
23
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
24
|
+
the right backstop for it.
|
|
22
25
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
23
26
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
24
27
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -49,7 +52,7 @@ npm test
|
|
|
49
52
|
npm run test:coverage
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
aimhooman also enforces
|
|
53
|
-
violation to fix, not a check to bypass. The rule
|
|
54
|
-
ship.
|
|
55
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
56
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
57
|
+
is simple: AI works, hoomans ship.
|
|
55
58
|
<!-- aimhooman:ruleset-end -->
|
|
@@ -12,13 +12,16 @@ Its policy:
|
|
|
12
12
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
13
13
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
14
14
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
15
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
-
If one is staged, unstage it and keep it out of Git
|
|
15
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
17
|
+
instead.
|
|
17
18
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
18
19
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
19
20
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
20
21
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
21
|
-
SendGrid). Public certificates are allowed.
|
|
22
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
23
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
24
|
+
the right backstop for it.
|
|
22
25
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
23
26
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
24
27
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -49,7 +52,7 @@ npm test
|
|
|
49
52
|
npm run test:coverage
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
aimhooman also enforces
|
|
53
|
-
violation to fix, not a check to bypass. The rule
|
|
54
|
-
ship.
|
|
55
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
56
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
57
|
+
is simple: AI works, hoomans ship.
|
|
55
58
|
<!-- aimhooman:ruleset-end -->
|
|
@@ -16,13 +16,16 @@ Its policy:
|
|
|
16
16
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
17
17
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
18
18
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
19
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
20
|
-
If one is staged, unstage it and keep it out of Git
|
|
19
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
20
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
21
|
+
instead.
|
|
21
22
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
22
23
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
23
24
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
24
25
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
25
|
-
SendGrid). Public certificates are allowed.
|
|
26
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
27
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
28
|
+
the right backstop for it.
|
|
26
29
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
27
30
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
28
31
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -53,7 +56,7 @@ npm test
|
|
|
53
56
|
npm run test:coverage
|
|
54
57
|
```
|
|
55
58
|
|
|
56
|
-
aimhooman also enforces
|
|
57
|
-
violation to fix, not a check to bypass. The rule
|
|
58
|
-
ship.
|
|
59
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
60
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
61
|
+
is simple: AI works, hoomans ship.
|
|
59
62
|
<!-- aimhooman:ruleset-end -->
|
package/AGENTS.md
CHANGED
|
@@ -12,13 +12,16 @@ Its policy:
|
|
|
12
12
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
13
13
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
14
14
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
15
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
-
If one is staged, unstage it and keep it out of Git
|
|
15
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
17
|
+
instead.
|
|
17
18
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
18
19
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
19
20
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
20
21
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
21
|
-
SendGrid). Public certificates are allowed.
|
|
22
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
23
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
24
|
+
the right backstop for it.
|
|
22
25
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
23
26
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
24
27
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -49,7 +52,7 @@ npm test
|
|
|
49
52
|
npm run test:coverage
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
aimhooman also enforces
|
|
53
|
-
violation to fix, not a check to bypass. The rule
|
|
54
|
-
ship.
|
|
55
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
56
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
57
|
+
is simple: AI works, hoomans ship.
|
|
55
58
|
<!-- aimhooman:ruleset-end -->
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,117 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.1] - 2026-07-19
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- `fix` on a strict policy no longer exits 11 (review required) when the
|
|
13
|
+
message holds a removable attribution line but the recheck of the cleaned
|
|
14
|
+
message stays incomplete; it exits 31, the same verdict `--apply` reaches
|
|
15
|
+
for the same content.
|
|
16
|
+
- `commitmsg` printed the blocking "scan incomplete … and retry" framing for
|
|
17
|
+
a tree scan that stopped at exit 11 on the compliance profile; the framing
|
|
18
|
+
now follows the profile, matching `check` and `fix`.
|
|
19
|
+
- `loadOverrides` burned the full lock retry budget (~50 × 10 ms) when a
|
|
20
|
+
caller already held `overrides.json.lock` (every `allow`/`deny`/`override`/
|
|
21
|
+
`review`/`policy-review` write); the warn-once migration persist now takes
|
|
22
|
+
one lock attempt and skips quietly when the lock is held.
|
|
23
|
+
- Two-arg `loadConfig(stateDir, root)` dropped the per-clone `gitignore`
|
|
24
|
+
record whenever a project policy owned the profile; the record is now read
|
|
25
|
+
best effort from config.json.
|
|
26
|
+
- Session-start hook: a failed `.git/info/exclude` refresh no longer skips
|
|
27
|
+
the worktree `.gitignore` refresh; each has its own silent failure, like
|
|
28
|
+
the pre-tool-use path.
|
|
29
|
+
- `uninstall` now also sweeps the worktree `.gitignore` lock queue left by
|
|
30
|
+
`init --gitignore`; the sweep previously covered only the three `.git`-side
|
|
31
|
+
queues.
|
|
32
|
+
- `action.yml` gained a `version` input (default `latest`) so the installed
|
|
33
|
+
CLI can be pinned (pinning the action tag never pinned the CLI), and its
|
|
34
|
+
`actions/setup-node` step is pinned to the same SHA the test workflow uses.
|
|
35
|
+
- The tarball now ships `docs/secrets.md`, `docs/policy.md`,
|
|
36
|
+
`docs/cli-reference.md`, `docs/faq.md`, and `docs/integrations.md`; links
|
|
37
|
+
to them from the README and the catalog dangled inside node_modules.
|
|
38
|
+
- Documentation and comment accuracy: the Cursor manifest description and the
|
|
39
|
+
usage and integrations exit-code lines no longer mention secret scanning
|
|
40
|
+
and now name the strict/final-guard scope of exit 31; the README flowchart
|
|
41
|
+
no longer implies an incomplete scan blocks pre-commit on every profile;
|
|
42
|
+
`docs/policy.md` states correctly that strict turns policy-file and
|
|
43
|
+
agent-instruction findings into blocks and that only the policy
|
|
44
|
+
downgrade/removal block is allow-proof; the 0.3.0 binary bullet, the FAQ
|
|
45
|
+
budget answer, and two stale comments now describe what the code does.
|
|
46
|
+
|
|
47
|
+
### Removed
|
|
48
|
+
|
|
49
|
+
- Dead code: the unreachable `release` branch of
|
|
50
|
+
`scripts/scan-ci-history.mjs` (no workflow sets that context) along with
|
|
51
|
+
`selectReleaseBase` and the `RELEASE_ENVIRONMENT_VERIFIED` contract; the
|
|
52
|
+
never-produced `object-read-failed` incomplete reason; the callerless
|
|
53
|
+
`repeatable` option in the argument parser; and eight unused `node:fs`
|
|
54
|
+
imports in `src/gitx.mjs`.
|
|
55
|
+
|
|
56
|
+
## [0.3.0] - 2026-07-19
|
|
57
|
+
|
|
58
|
+
This release narrows aimhooman to the job it does better than anyone else:
|
|
59
|
+
keeping AI tooling residue and attribution out of Git history. Secret
|
|
60
|
+
scanning leaves the product — dedicated tools do it better, and
|
|
61
|
+
`docs/secrets.md` shows the gitleaks setup that replaces it. Commits also
|
|
62
|
+
get less brittle: a scan that cannot cover everything now warns on the
|
|
63
|
+
frictionless profiles instead of stopping the first hook, while the final
|
|
64
|
+
reference-transaction guard keeps its veto on every profile.
|
|
65
|
+
|
|
66
|
+
### Removed
|
|
67
|
+
|
|
68
|
+
- **Breaking: built-in secret scanning is gone.** `rules/secrets.json` and
|
|
69
|
+
the four secret path rules (`secret.dotenv`, `secret.private-key`,
|
|
70
|
+
`secret.aws-credentials`, `secret.claude-credentials`) no longer ship, so
|
|
71
|
+
`.env` files, private keys, and provider tokens are not detected by
|
|
72
|
+
aimhooman anymore. Pair it with gitleaks — `docs/secrets.md` has the
|
|
73
|
+
pre-commit and GitHub Actions setup. The agent-facing instruction files
|
|
74
|
+
still tell agents not to commit secrets; only the mechanical scanner
|
|
75
|
+
moved out.
|
|
76
|
+
- `init --grandfather-secrets` and the `--scope secret-path` override are
|
|
77
|
+
gone with the scanner. Legacy `secret-path` entries in an existing
|
|
78
|
+
`overrides.json` are dropped on load with a warning naming the file.
|
|
79
|
+
A secret already in history needs rotation and a gitleaks run, not
|
|
80
|
+
aimhooman.
|
|
81
|
+
- In-budget binary blobs are no longer content-scanned: v0.2.0 read their
|
|
82
|
+
bytes for secrets, and with the scanner gone they now skip as binary. The
|
|
83
|
+
oversized-file probe is unchanged — binary up to 16 MiB still skips
|
|
84
|
+
complete, and binary over it is still a size-limit skip that leaves the
|
|
85
|
+
scan incomplete.
|
|
86
|
+
|
|
87
|
+
### Added
|
|
88
|
+
|
|
89
|
+
- `aimhooman init --gitignore`: opt-in that also writes the managed
|
|
90
|
+
AI-artifact pattern block into the worktree `.gitignore`, so a team can
|
|
91
|
+
commit it and share the ignore set across clones. The default stays
|
|
92
|
+
local (`.git/info/exclude`); `status` shows the block and `uninstall`
|
|
93
|
+
removes it. Gitignore matching is case-sensitive.
|
|
94
|
+
- `docs/ai-artifacts.gitignore` and `docs/catalog.md`: the detection
|
|
95
|
+
catalog as a standalone resource, generated from `rules/*.json` by
|
|
96
|
+
`npm run sync:catalog` and kept honest in CI. Just want the ignore
|
|
97
|
+
list? Copy the first file.
|
|
98
|
+
- `.pre-commit-hooks.yaml`: run aimhooman from the pre-commit.com
|
|
99
|
+
framework (`aimhooman check --staged`).
|
|
100
|
+
- `action.yml`: a composite GitHub Action that runs
|
|
101
|
+
`aimhooman check --range <base>...<head>` in CI. See
|
|
102
|
+
`docs/integrations.md` for it, the pre-commit.com config, and honest
|
|
103
|
+
husky/lint-staged notes.
|
|
104
|
+
- Docs gained `docs/policy.md`, `docs/cli-reference.md`, `docs/faq.md`,
|
|
105
|
+
`docs/integrations.md`, and `docs/secrets.md`.
|
|
106
|
+
|
|
107
|
+
### Changed
|
|
108
|
+
|
|
109
|
+
- An incomplete scan (an oversized file, a budget hit, an unloadable
|
|
110
|
+
local rule pack) now warns and continues on `clean`/`compliance` in
|
|
111
|
+
`check`, `fix`, `pre-commit`, and `commit-msg` instead of stopping at
|
|
112
|
+
exit 31. `strict` stays fail-closed, and so does the
|
|
113
|
+
reference-transaction guard on every profile — the stop moved from the
|
|
114
|
+
first hook to the final ref boundary, which `--no-verify` cannot skip.
|
|
115
|
+
- The README slimmed from 481 to 162 lines. The detail it carried —
|
|
116
|
+
versioned team policy, overrides, command and exit-code references,
|
|
117
|
+
the FAQ — moved into `docs/` unchanged in substance.
|
|
118
|
+
|
|
8
119
|
## [0.2.0] - 2026-07-19
|
|
9
120
|
|
|
10
121
|
This release works through the findings of the cross-ecosystem field test
|
package/CONTRIBUTING.md
CHANGED
|
@@ -31,9 +31,8 @@ npm run verify # schemas, workflows, dead code, coverage, package, installed
|
|
|
31
31
|
## Adding a rule
|
|
32
32
|
|
|
33
33
|
Rules live in `rules/` as JSON arrays: `paths.json` (staged paths),
|
|
34
|
-
`attribution.json` (commit-message lines), `markers.json` (staged content)
|
|
35
|
-
|
|
36
|
-
rule has the shape:
|
|
34
|
+
`attribution.json` (commit-message lines), `markers.json` (staged content).
|
|
35
|
+
Each rule has the shape:
|
|
37
36
|
|
|
38
37
|
```json
|
|
39
38
|
{
|
package/GEMINI.md
CHANGED
|
@@ -12,13 +12,16 @@ Its policy:
|
|
|
12
12
|
`.copilot/*`, `.cursor/session*`, `.cursor/chats/*`, `.cursor/logs/*`,
|
|
13
13
|
`.aider.*`, `.specstory/*`, `.continue/sessions/*`, `.playwright-mcp/*`,
|
|
14
14
|
`.remember/*`, `.superpowers/*`, and `.agent/*`. The examples are not
|
|
15
|
-
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
-
If one is staged, unstage it and keep it out of Git
|
|
15
|
+
exhaustive; the packaged `rules/paths.json` is the detection source of truth
|
|
16
|
+
for these artifacts. If one is staged, unstage it and keep it out of Git
|
|
17
|
+
instead.
|
|
17
18
|
- Never commit secrets: a real `.env` (not `.env.example`), private keys
|
|
18
19
|
(`id_rsa` and files containing a private-key header), `.aws/credentials`,
|
|
19
20
|
`.claude/.credentials.json`, service-account keys, or a provider API key
|
|
20
21
|
(GitHub, GitLab, npm, Slack, Anthropic, OpenAI, Google, Stripe, Hugging Face,
|
|
21
|
-
SendGrid). Public certificates are allowed.
|
|
22
|
+
SendGrid). Public certificates are allowed. aimhooman does not scan for
|
|
23
|
+
secrets — this rule is on you, and a dedicated scanner such as gitleaks is
|
|
24
|
+
the right backstop for it.
|
|
22
25
|
- Never add AI attribution to commit messages: no `Co-authored-by` trailer naming
|
|
23
26
|
an AI (Claude, Copilot, Codex), no "Generated with/by <AI>" lines, no AI-service
|
|
24
27
|
noreply emails. A commit message reads as if a human wrote it.
|
|
@@ -49,7 +52,7 @@ npm test
|
|
|
49
52
|
npm run test:coverage
|
|
50
53
|
```
|
|
51
54
|
|
|
52
|
-
aimhooman also enforces
|
|
53
|
-
violation to fix, not a check to bypass. The rule
|
|
54
|
-
ship.
|
|
55
|
+
aimhooman also enforces the artifact and attribution rules at commit time, so
|
|
56
|
+
a blocked commit means a real violation to fix, not a check to bypass. The rule
|
|
57
|
+
is simple: AI works, hoomans ship.
|
|
55
58
|
<!-- aimhooman:ruleset-end -->
|