ai-dev-harness 0.2.0__tar.gz

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.
Files changed (36) hide show
  1. ai_dev_harness-0.2.0/LICENSE +21 -0
  2. ai_dev_harness-0.2.0/PKG-INFO +200 -0
  3. ai_dev_harness-0.2.0/README.md +173 -0
  4. ai_dev_harness-0.2.0/ai_dev_harness.egg-info/PKG-INFO +200 -0
  5. ai_dev_harness-0.2.0/ai_dev_harness.egg-info/SOURCES.txt +34 -0
  6. ai_dev_harness-0.2.0/ai_dev_harness.egg-info/dependency_links.txt +1 -0
  7. ai_dev_harness-0.2.0/ai_dev_harness.egg-info/entry_points.txt +3 -0
  8. ai_dev_harness-0.2.0/ai_dev_harness.egg-info/requires.txt +3 -0
  9. ai_dev_harness-0.2.0/ai_dev_harness.egg-info/top_level.txt +1 -0
  10. ai_dev_harness-0.2.0/liteharness/__init__.py +3 -0
  11. ai_dev_harness-0.2.0/liteharness/__main__.py +290 -0
  12. ai_dev_harness-0.2.0/liteharness/clean.py +165 -0
  13. ai_dev_harness-0.2.0/liteharness/diff.py +189 -0
  14. ai_dev_harness-0.2.0/liteharness/export.py +96 -0
  15. ai_dev_harness-0.2.0/liteharness/harnesses/__init__.py +349 -0
  16. ai_dev_harness-0.2.0/liteharness/harnesses/claude_code.py +500 -0
  17. ai_dev_harness-0.2.0/liteharness/harnesses/codex.py +164 -0
  18. ai_dev_harness-0.2.0/liteharness/harnesses/copilot.py +268 -0
  19. ai_dev_harness-0.2.0/liteharness/harnesses/cursor.py +221 -0
  20. ai_dev_harness-0.2.0/liteharness/harnesses/windsurf.py +257 -0
  21. ai_dev_harness-0.2.0/liteharness/health.py +47 -0
  22. ai_dev_harness-0.2.0/liteharness/parser.py +203 -0
  23. ai_dev_harness-0.2.0/liteharness/report.py +164 -0
  24. ai_dev_harness-0.2.0/liteharness/scanner.py +125 -0
  25. ai_dev_harness-0.2.0/liteharness/server.py +178 -0
  26. ai_dev_harness-0.2.0/liteharness/style.py +41 -0
  27. ai_dev_harness-0.2.0/liteharness/web/index.html +1052 -0
  28. ai_dev_harness-0.2.0/pyproject.toml +44 -0
  29. ai_dev_harness-0.2.0/setup.cfg +4 -0
  30. ai_dev_harness-0.2.0/tests/test_claude_code_harness.py +152 -0
  31. ai_dev_harness-0.2.0/tests/test_copilot_harness.py +257 -0
  32. ai_dev_harness-0.2.0/tests/test_harness_schema.py +131 -0
  33. ai_dev_harness-0.2.0/tests/test_harnesses.py +134 -0
  34. ai_dev_harness-0.2.0/tests/test_parser.py +162 -0
  35. ai_dev_harness-0.2.0/tests/test_scanner.py +98 -0
  36. ai_dev_harness-0.2.0/tests/test_windsurf_harness.py +264 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Boris Villazon-Terrazas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.4
2
+ Name: ai-dev-harness
3
+ Version: 0.2.0
4
+ Summary: Multi-harness AI coding tool config inspector — scan, visualize, and audit AI assistant ecosystems.
5
+ Author: Boris Villazon-Terrazas
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/boricles/claude-lens
8
+ Project-URL: Repository, https://github.com/boricles/claude-lens
9
+ Project-URL: Bug Tracker, https://github.com/boricles/claude-lens/issues
10
+ Project-URL: Changelog, https://github.com/boricles/claude-lens/blob/main/CHANGELOG.md
11
+ Keywords: liteharness,claude-code,cursor,codex,copilot,windsurf,devtools,observability
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Topic :: Software Development :: Quality Assurance
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Provides-Extra: color
25
+ Requires-Dist: rich; extra == "color"
26
+ Dynamic: license-file
27
+
28
+ # LiteHarness
29
+
30
+ [![PyPI version](https://img.shields.io/pypi/v/liteharness.svg)](https://pypi.org/project/liteharness/)
31
+ [![Python 3.10+](https://img.shields.io/pypi/pyversions/liteharness.svg)](https://pypi.org/project/liteharness/)
32
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
33
+
34
+ **Multi-harness AI coding tool config inspector.**
35
+
36
+ Scan, visualize, and audit every AI coding assistant installed on your machine — from one place.
37
+
38
+ ---
39
+
40
+ ## Supported Tools
41
+
42
+ | Tool | Harness | Config Paths | Instruction File |
43
+ |------|---------|-------------|-----------------|
44
+ | **Claude Code** | `claude_code` | `~/.claude/`, `.claude/` | `CLAUDE.md` |
45
+ | **Cursor** | `cursor` | `~/.cursor/`, `.cursor/` | `.cursorrules`, `.cursor/rules/*.md` |
46
+ | **Codex CLI** | `codex` | `~/.codex/` | `AGENTS.md`, `codex.json` |
47
+ | **Windsurf** | `windsurf` | `~/.windsurf/`, `.windsurf/` | `.windsurfrules`, `.windsurf/rules/*.md` |
48
+ | **GitHub Copilot** | `copilot` | `~/.config/github-copilot/`, `.github/` | `.github/copilot-instructions.md` |
49
+
50
+ Each tool has its own **harness** — a self-contained module that knows how to detect the tool, discover its config files, parse them, and run health checks.
51
+
52
+ ## Installation
53
+
54
+ ```bash
55
+ # Install from PyPI
56
+ pip install liteharness
57
+ ```
58
+
59
+ Or install from source in development mode:
60
+
61
+ ```bash
62
+ git clone https://github.com/boricles/claude-lens.git
63
+ cd claude-lens
64
+ pip install -e .
65
+ ```
66
+
67
+ ## Usage
68
+
69
+ ### CLI Report
70
+
71
+ ```bash
72
+ # Scan all detected AI tools and print a report
73
+ liteharness report
74
+
75
+ # Scan a specific harness only
76
+ liteharness report --harness claude_code
77
+
78
+ # List all supported harnesses and detection status
79
+ liteharness harnesses
80
+ ```
81
+
82
+ ### JSON Output
83
+
84
+ ```bash
85
+ # Full JSON scan data
86
+ liteharness scan
87
+
88
+ # Filter to one harness
89
+ liteharness scan --harness cursor
90
+
91
+ # Pretty-printed
92
+ liteharness scan | python3 -m json.tool
93
+ ```
94
+
95
+ ### Web Dashboard
96
+
97
+ ```bash
98
+ # Launch interactive browser UI on localhost:1834
99
+ liteharness web
100
+
101
+ # Custom port
102
+ liteharness web --port 9000
103
+ ```
104
+
105
+ ### Other Commands
106
+
107
+ ```bash
108
+ # Compare two scan snapshots
109
+ liteharness diff snapshot-a.json snapshot-b.json
110
+
111
+ # Export a project's config as a portable bundle
112
+ liteharness export myproject
113
+
114
+ # Clean up stale sessions and orphaned data (interactive)
115
+ liteharness clean
116
+
117
+ # Print version
118
+ liteharness version
119
+ ```
120
+
121
+ The legacy `claude-lens` command is still available as an alias.
122
+
123
+ ## What It Detects
124
+
125
+ For each tool, LiteHarness discovers:
126
+
127
+ - **Global settings** — permissions, preferences, API config
128
+ - **Instruction files** — system prompts and rules (CLAUDE.md, .cursorrules, etc.)
129
+ - **Rules/agents** — custom agent definitions, rule files
130
+ - **Sessions** — session metadata (count, size, age — never reads content)
131
+ - **Plugins/extensions** — installed plugins with capabilities
132
+ - **Memory** — memory files and index integrity
133
+ - **Health issues** — orphaned state, stale sessions, missing instructions, config drift
134
+
135
+ ## Health Checks
136
+
137
+ Each harness runs its own health checks:
138
+
139
+ | Check | Harnesses | Severity |
140
+ |-------|-----------|----------|
141
+ | Missing instruction file | All | info |
142
+ | Orphaned project state | Claude Code | warning |
143
+ | Stale sessions (>30 days) | Claude Code | info |
144
+ | Memory index drift | Claude Code | warning |
145
+ | Disk usage >100-200 MB | Claude Code, Cursor, Windsurf | warning |
146
+ | Outdated config (>180 days) | Copilot | info |
147
+
148
+ ## Architecture
149
+
150
+ ```
151
+ liteharness/
152
+ harnesses/
153
+ __init__.py # BaseHarness ABC, schema dataclasses, registry
154
+ claude_code.py # Claude Code harness
155
+ cursor.py # Cursor harness
156
+ codex.py # Codex CLI harness
157
+ windsurf.py # Windsurf harness
158
+ copilot.py # GitHub Copilot harness
159
+ scanner.py # Orchestrator — runs all harnesses, merges results
160
+ parser.py # Shared parsers (frontmatter, JSON, etc.)
161
+ report.py # CLI text report renderer
162
+ server.py # HTTP server + web dashboard
163
+ web/index.html # Single-file web dashboard (Tailwind + vanilla JS)
164
+ export.py # Project config export
165
+ diff.py # Scan snapshot comparison
166
+ clean.py # Cleanup stale data
167
+ style.py # Shared ANSI color helpers
168
+ ```
169
+
170
+ ### Adding a New Harness
171
+
172
+ 1. Create `liteharness/harnesses/newtool.py`
173
+ 2. Subclass `BaseHarness` and implement `detect()`, `scan()`, `health_checks()`
174
+ 3. Decorate with `@register_harness`
175
+ 4. Add the module name to `_ensure_harnesses_loaded()` in `harnesses/__init__.py`
176
+
177
+ ## Design Principles
178
+
179
+ - **Zero mandatory dependencies** — stdlib only for core scanner and CLI
180
+ - **Local-first** — web server binds to `127.0.0.1` only
181
+ - **Privacy-safe** — never reads conversation content from session files
182
+ - **Non-destructive** — never modifies user files unless in explicit `clean` mode
183
+ - **Self-contained harnesses** — each harness module is independent
184
+
185
+ ## Development
186
+
187
+ ```bash
188
+ # Run all tests
189
+ python3 -m unittest discover tests/ -v
190
+
191
+ # Run a specific test file
192
+ python3 -m unittest tests.test_windsurf_harness -v
193
+
194
+ # Run as module
195
+ python3 -m liteharness version
196
+ ```
197
+
198
+ ## License
199
+
200
+ MIT
@@ -0,0 +1,173 @@
1
+ # LiteHarness
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/liteharness.svg)](https://pypi.org/project/liteharness/)
4
+ [![Python 3.10+](https://img.shields.io/pypi/pyversions/liteharness.svg)](https://pypi.org/project/liteharness/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ **Multi-harness AI coding tool config inspector.**
8
+
9
+ Scan, visualize, and audit every AI coding assistant installed on your machine — from one place.
10
+
11
+ ---
12
+
13
+ ## Supported Tools
14
+
15
+ | Tool | Harness | Config Paths | Instruction File |
16
+ |------|---------|-------------|-----------------|
17
+ | **Claude Code** | `claude_code` | `~/.claude/`, `.claude/` | `CLAUDE.md` |
18
+ | **Cursor** | `cursor` | `~/.cursor/`, `.cursor/` | `.cursorrules`, `.cursor/rules/*.md` |
19
+ | **Codex CLI** | `codex` | `~/.codex/` | `AGENTS.md`, `codex.json` |
20
+ | **Windsurf** | `windsurf` | `~/.windsurf/`, `.windsurf/` | `.windsurfrules`, `.windsurf/rules/*.md` |
21
+ | **GitHub Copilot** | `copilot` | `~/.config/github-copilot/`, `.github/` | `.github/copilot-instructions.md` |
22
+
23
+ Each tool has its own **harness** — a self-contained module that knows how to detect the tool, discover its config files, parse them, and run health checks.
24
+
25
+ ## Installation
26
+
27
+ ```bash
28
+ # Install from PyPI
29
+ pip install liteharness
30
+ ```
31
+
32
+ Or install from source in development mode:
33
+
34
+ ```bash
35
+ git clone https://github.com/boricles/claude-lens.git
36
+ cd claude-lens
37
+ pip install -e .
38
+ ```
39
+
40
+ ## Usage
41
+
42
+ ### CLI Report
43
+
44
+ ```bash
45
+ # Scan all detected AI tools and print a report
46
+ liteharness report
47
+
48
+ # Scan a specific harness only
49
+ liteharness report --harness claude_code
50
+
51
+ # List all supported harnesses and detection status
52
+ liteharness harnesses
53
+ ```
54
+
55
+ ### JSON Output
56
+
57
+ ```bash
58
+ # Full JSON scan data
59
+ liteharness scan
60
+
61
+ # Filter to one harness
62
+ liteharness scan --harness cursor
63
+
64
+ # Pretty-printed
65
+ liteharness scan | python3 -m json.tool
66
+ ```
67
+
68
+ ### Web Dashboard
69
+
70
+ ```bash
71
+ # Launch interactive browser UI on localhost:1834
72
+ liteharness web
73
+
74
+ # Custom port
75
+ liteharness web --port 9000
76
+ ```
77
+
78
+ ### Other Commands
79
+
80
+ ```bash
81
+ # Compare two scan snapshots
82
+ liteharness diff snapshot-a.json snapshot-b.json
83
+
84
+ # Export a project's config as a portable bundle
85
+ liteharness export myproject
86
+
87
+ # Clean up stale sessions and orphaned data (interactive)
88
+ liteharness clean
89
+
90
+ # Print version
91
+ liteharness version
92
+ ```
93
+
94
+ The legacy `claude-lens` command is still available as an alias.
95
+
96
+ ## What It Detects
97
+
98
+ For each tool, LiteHarness discovers:
99
+
100
+ - **Global settings** — permissions, preferences, API config
101
+ - **Instruction files** — system prompts and rules (CLAUDE.md, .cursorrules, etc.)
102
+ - **Rules/agents** — custom agent definitions, rule files
103
+ - **Sessions** — session metadata (count, size, age — never reads content)
104
+ - **Plugins/extensions** — installed plugins with capabilities
105
+ - **Memory** — memory files and index integrity
106
+ - **Health issues** — orphaned state, stale sessions, missing instructions, config drift
107
+
108
+ ## Health Checks
109
+
110
+ Each harness runs its own health checks:
111
+
112
+ | Check | Harnesses | Severity |
113
+ |-------|-----------|----------|
114
+ | Missing instruction file | All | info |
115
+ | Orphaned project state | Claude Code | warning |
116
+ | Stale sessions (>30 days) | Claude Code | info |
117
+ | Memory index drift | Claude Code | warning |
118
+ | Disk usage >100-200 MB | Claude Code, Cursor, Windsurf | warning |
119
+ | Outdated config (>180 days) | Copilot | info |
120
+
121
+ ## Architecture
122
+
123
+ ```
124
+ liteharness/
125
+ harnesses/
126
+ __init__.py # BaseHarness ABC, schema dataclasses, registry
127
+ claude_code.py # Claude Code harness
128
+ cursor.py # Cursor harness
129
+ codex.py # Codex CLI harness
130
+ windsurf.py # Windsurf harness
131
+ copilot.py # GitHub Copilot harness
132
+ scanner.py # Orchestrator — runs all harnesses, merges results
133
+ parser.py # Shared parsers (frontmatter, JSON, etc.)
134
+ report.py # CLI text report renderer
135
+ server.py # HTTP server + web dashboard
136
+ web/index.html # Single-file web dashboard (Tailwind + vanilla JS)
137
+ export.py # Project config export
138
+ diff.py # Scan snapshot comparison
139
+ clean.py # Cleanup stale data
140
+ style.py # Shared ANSI color helpers
141
+ ```
142
+
143
+ ### Adding a New Harness
144
+
145
+ 1. Create `liteharness/harnesses/newtool.py`
146
+ 2. Subclass `BaseHarness` and implement `detect()`, `scan()`, `health_checks()`
147
+ 3. Decorate with `@register_harness`
148
+ 4. Add the module name to `_ensure_harnesses_loaded()` in `harnesses/__init__.py`
149
+
150
+ ## Design Principles
151
+
152
+ - **Zero mandatory dependencies** — stdlib only for core scanner and CLI
153
+ - **Local-first** — web server binds to `127.0.0.1` only
154
+ - **Privacy-safe** — never reads conversation content from session files
155
+ - **Non-destructive** — never modifies user files unless in explicit `clean` mode
156
+ - **Self-contained harnesses** — each harness module is independent
157
+
158
+ ## Development
159
+
160
+ ```bash
161
+ # Run all tests
162
+ python3 -m unittest discover tests/ -v
163
+
164
+ # Run a specific test file
165
+ python3 -m unittest tests.test_windsurf_harness -v
166
+
167
+ # Run as module
168
+ python3 -m liteharness version
169
+ ```
170
+
171
+ ## License
172
+
173
+ MIT
@@ -0,0 +1,200 @@
1
+ Metadata-Version: 2.4
2
+ Name: ai-dev-harness
3
+ Version: 0.2.0
4
+ Summary: Multi-harness AI coding tool config inspector — scan, visualize, and audit AI assistant ecosystems.
5
+ Author: Boris Villazon-Terrazas
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/boricles/claude-lens
8
+ Project-URL: Repository, https://github.com/boricles/claude-lens
9
+ Project-URL: Bug Tracker, https://github.com/boricles/claude-lens/issues
10
+ Project-URL: Changelog, https://github.com/boricles/claude-lens/blob/main/CHANGELOG.md
11
+ Keywords: liteharness,claude-code,cursor,codex,copilot,windsurf,devtools,observability
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Topic :: Software Development :: Quality Assurance
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Requires-Python: >=3.10
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Provides-Extra: color
25
+ Requires-Dist: rich; extra == "color"
26
+ Dynamic: license-file
27
+
28
+ # LiteHarness
29
+
30
+ [![PyPI version](https://img.shields.io/pypi/v/liteharness.svg)](https://pypi.org/project/liteharness/)
31
+ [![Python 3.10+](https://img.shields.io/pypi/pyversions/liteharness.svg)](https://pypi.org/project/liteharness/)
32
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
33
+
34
+ **Multi-harness AI coding tool config inspector.**
35
+
36
+ Scan, visualize, and audit every AI coding assistant installed on your machine — from one place.
37
+
38
+ ---
39
+
40
+ ## Supported Tools
41
+
42
+ | Tool | Harness | Config Paths | Instruction File |
43
+ |------|---------|-------------|-----------------|
44
+ | **Claude Code** | `claude_code` | `~/.claude/`, `.claude/` | `CLAUDE.md` |
45
+ | **Cursor** | `cursor` | `~/.cursor/`, `.cursor/` | `.cursorrules`, `.cursor/rules/*.md` |
46
+ | **Codex CLI** | `codex` | `~/.codex/` | `AGENTS.md`, `codex.json` |
47
+ | **Windsurf** | `windsurf` | `~/.windsurf/`, `.windsurf/` | `.windsurfrules`, `.windsurf/rules/*.md` |
48
+ | **GitHub Copilot** | `copilot` | `~/.config/github-copilot/`, `.github/` | `.github/copilot-instructions.md` |
49
+
50
+ Each tool has its own **harness** — a self-contained module that knows how to detect the tool, discover its config files, parse them, and run health checks.
51
+
52
+ ## Installation
53
+
54
+ ```bash
55
+ # Install from PyPI
56
+ pip install liteharness
57
+ ```
58
+
59
+ Or install from source in development mode:
60
+
61
+ ```bash
62
+ git clone https://github.com/boricles/claude-lens.git
63
+ cd claude-lens
64
+ pip install -e .
65
+ ```
66
+
67
+ ## Usage
68
+
69
+ ### CLI Report
70
+
71
+ ```bash
72
+ # Scan all detected AI tools and print a report
73
+ liteharness report
74
+
75
+ # Scan a specific harness only
76
+ liteharness report --harness claude_code
77
+
78
+ # List all supported harnesses and detection status
79
+ liteharness harnesses
80
+ ```
81
+
82
+ ### JSON Output
83
+
84
+ ```bash
85
+ # Full JSON scan data
86
+ liteharness scan
87
+
88
+ # Filter to one harness
89
+ liteharness scan --harness cursor
90
+
91
+ # Pretty-printed
92
+ liteharness scan | python3 -m json.tool
93
+ ```
94
+
95
+ ### Web Dashboard
96
+
97
+ ```bash
98
+ # Launch interactive browser UI on localhost:1834
99
+ liteharness web
100
+
101
+ # Custom port
102
+ liteharness web --port 9000
103
+ ```
104
+
105
+ ### Other Commands
106
+
107
+ ```bash
108
+ # Compare two scan snapshots
109
+ liteharness diff snapshot-a.json snapshot-b.json
110
+
111
+ # Export a project's config as a portable bundle
112
+ liteharness export myproject
113
+
114
+ # Clean up stale sessions and orphaned data (interactive)
115
+ liteharness clean
116
+
117
+ # Print version
118
+ liteharness version
119
+ ```
120
+
121
+ The legacy `claude-lens` command is still available as an alias.
122
+
123
+ ## What It Detects
124
+
125
+ For each tool, LiteHarness discovers:
126
+
127
+ - **Global settings** — permissions, preferences, API config
128
+ - **Instruction files** — system prompts and rules (CLAUDE.md, .cursorrules, etc.)
129
+ - **Rules/agents** — custom agent definitions, rule files
130
+ - **Sessions** — session metadata (count, size, age — never reads content)
131
+ - **Plugins/extensions** — installed plugins with capabilities
132
+ - **Memory** — memory files and index integrity
133
+ - **Health issues** — orphaned state, stale sessions, missing instructions, config drift
134
+
135
+ ## Health Checks
136
+
137
+ Each harness runs its own health checks:
138
+
139
+ | Check | Harnesses | Severity |
140
+ |-------|-----------|----------|
141
+ | Missing instruction file | All | info |
142
+ | Orphaned project state | Claude Code | warning |
143
+ | Stale sessions (>30 days) | Claude Code | info |
144
+ | Memory index drift | Claude Code | warning |
145
+ | Disk usage >100-200 MB | Claude Code, Cursor, Windsurf | warning |
146
+ | Outdated config (>180 days) | Copilot | info |
147
+
148
+ ## Architecture
149
+
150
+ ```
151
+ liteharness/
152
+ harnesses/
153
+ __init__.py # BaseHarness ABC, schema dataclasses, registry
154
+ claude_code.py # Claude Code harness
155
+ cursor.py # Cursor harness
156
+ codex.py # Codex CLI harness
157
+ windsurf.py # Windsurf harness
158
+ copilot.py # GitHub Copilot harness
159
+ scanner.py # Orchestrator — runs all harnesses, merges results
160
+ parser.py # Shared parsers (frontmatter, JSON, etc.)
161
+ report.py # CLI text report renderer
162
+ server.py # HTTP server + web dashboard
163
+ web/index.html # Single-file web dashboard (Tailwind + vanilla JS)
164
+ export.py # Project config export
165
+ diff.py # Scan snapshot comparison
166
+ clean.py # Cleanup stale data
167
+ style.py # Shared ANSI color helpers
168
+ ```
169
+
170
+ ### Adding a New Harness
171
+
172
+ 1. Create `liteharness/harnesses/newtool.py`
173
+ 2. Subclass `BaseHarness` and implement `detect()`, `scan()`, `health_checks()`
174
+ 3. Decorate with `@register_harness`
175
+ 4. Add the module name to `_ensure_harnesses_loaded()` in `harnesses/__init__.py`
176
+
177
+ ## Design Principles
178
+
179
+ - **Zero mandatory dependencies** — stdlib only for core scanner and CLI
180
+ - **Local-first** — web server binds to `127.0.0.1` only
181
+ - **Privacy-safe** — never reads conversation content from session files
182
+ - **Non-destructive** — never modifies user files unless in explicit `clean` mode
183
+ - **Self-contained harnesses** — each harness module is independent
184
+
185
+ ## Development
186
+
187
+ ```bash
188
+ # Run all tests
189
+ python3 -m unittest discover tests/ -v
190
+
191
+ # Run a specific test file
192
+ python3 -m unittest tests.test_windsurf_harness -v
193
+
194
+ # Run as module
195
+ python3 -m liteharness version
196
+ ```
197
+
198
+ ## License
199
+
200
+ MIT
@@ -0,0 +1,34 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ ai_dev_harness.egg-info/PKG-INFO
5
+ ai_dev_harness.egg-info/SOURCES.txt
6
+ ai_dev_harness.egg-info/dependency_links.txt
7
+ ai_dev_harness.egg-info/entry_points.txt
8
+ ai_dev_harness.egg-info/requires.txt
9
+ ai_dev_harness.egg-info/top_level.txt
10
+ liteharness/__init__.py
11
+ liteharness/__main__.py
12
+ liteharness/clean.py
13
+ liteharness/diff.py
14
+ liteharness/export.py
15
+ liteharness/health.py
16
+ liteharness/parser.py
17
+ liteharness/report.py
18
+ liteharness/scanner.py
19
+ liteharness/server.py
20
+ liteharness/style.py
21
+ liteharness/harnesses/__init__.py
22
+ liteharness/harnesses/claude_code.py
23
+ liteharness/harnesses/codex.py
24
+ liteharness/harnesses/copilot.py
25
+ liteharness/harnesses/cursor.py
26
+ liteharness/harnesses/windsurf.py
27
+ liteharness/web/index.html
28
+ tests/test_claude_code_harness.py
29
+ tests/test_copilot_harness.py
30
+ tests/test_harness_schema.py
31
+ tests/test_harnesses.py
32
+ tests/test_parser.py
33
+ tests/test_scanner.py
34
+ tests/test_windsurf_harness.py
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ claude-lens = liteharness.__main__:main
3
+ liteharness = liteharness.__main__:main
@@ -0,0 +1,3 @@
1
+
2
+ [color]
3
+ rich
@@ -0,0 +1 @@
1
+ liteharness
@@ -0,0 +1,3 @@
1
+ """LiteHarness — Multi-harness AI coding tool config inspector."""
2
+
3
+ __version__ = "0.2.0"