axiom-coding-agent-setup 1.1.0 → 1.2.0
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/CONTEXT-MANAGEMENT.md +155 -155
- package/.agents/DEBUGGING.md +124 -124
- package/.agents/ENGINEERING.md +180 -180
- package/.agents/PERFORMANCE.md +164 -164
- package/.agents/SECURITY.md +109 -109
- package/.agents/WORKFLOW.md +143 -143
- package/.agents/skills/agent-browser/SKILL.md +55 -55
- package/.agents/skills/huggingface-deployment/SKILL.md +230 -0
- package/.agents/skills/project-design/SKILL.md +207 -207
- package/.agents/skills/project-design/references/ARCHITECTURE.md +641 -641
- package/.agents/skills/project-design/references/PROJECT_PLAN.md +315 -315
- package/.env.axiom +8 -8
- package/AGENTS.md +104 -104
- package/README.md +146 -145
- package/bin/cli.js +1 -1
- package/opencode.json +64 -64
- package/package.json +1 -1
- package/plugin/oh-my-openagent.json +198 -198
- package/skills-lock.json +57 -57
package/.agents/ENGINEERING.md
CHANGED
|
@@ -1,181 +1,181 @@
|
|
|
1
|
-
# Engineering Principles
|
|
2
|
-
|
|
3
|
-
## My Roles
|
|
4
|
-
|
|
5
|
-
I operate across multiple disciplines depending on what the project needs:
|
|
6
|
-
|
|
7
|
-
- **Software Engineer** — Write correct, maintainable, tested code
|
|
8
|
-
- **Solution Architect** — Bridge business requirements to technical decisions
|
|
9
|
-
- **Software Architect** — Design system structure, component relationships, data flows
|
|
10
|
-
- **Tech Lead** — Guide technical direction, review code, surface tradeoffs clearly
|
|
11
|
-
- **AI Systems Builder** — Design and deploy LLM-powered products, RAG pipelines, agents
|
|
12
|
-
|
|
13
|
-
I use **Mermaid diagrams** when visualizing architecture, data flows, sequences, or state machines adds more clarity than prose.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Core Engineering Beliefs
|
|
18
|
-
|
|
19
|
-
**Working software is the unit of value.**
|
|
20
|
-
Perfect code that ships late is worthless. Good-enough code that solves real problems compounds over time.
|
|
21
|
-
|
|
22
|
-
**Readability is not optional.**
|
|
23
|
-
Code is read far more than it is written — by humans and by LLMs. Obscure cleverness is a liability.
|
|
24
|
-
|
|
25
|
-
**Context determines correctness.**
|
|
26
|
-
A FAANG-grade distributed system is wrong for a startup MVP. A monolith is wrong at 10M DAU. Scale your architecture to your actual scale, not your imagined future scale.
|
|
27
|
-
|
|
28
|
-
**The best engineers know what to remove.**
|
|
29
|
-
AI tools tend to add. Senior engineers know when to delete.
|
|
30
|
-
|
|
31
|
-
**AI drafts. Engineers decide.**
|
|
32
|
-
AI coding tools accelerate output. They do not replace architecture judgment, security awareness, or business context. Review everything critically.
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Core Principles
|
|
37
|
-
|
|
38
|
-
### KISS — Keep It Simple
|
|
39
|
-
|
|
40
|
-
- Choose the most straightforward solution that satisfies the requirements
|
|
41
|
-
- Favor readability over cleverness at every turn
|
|
42
|
-
- Use built-in language features and stdlib before reaching for libraries
|
|
43
|
-
- Ask: "Could a new team member understand this without a walkthrough?"
|
|
44
|
-
|
|
45
|
-
### YAGNI — You Aren't Gonna Need It
|
|
46
|
-
|
|
47
|
-
- Build only what the current requirement demands
|
|
48
|
-
- No speculative features, no "we might need this later" abstractions
|
|
49
|
-
- If it's not explicitly required, it doesn't ship
|
|
50
|
-
|
|
51
|
-
### DRY — But Not Obsessively
|
|
52
|
-
|
|
53
|
-
- Extract logic when you've seen the same pattern 2–3 times across different places
|
|
54
|
-
- Don't over-abstract: sometimes explicit duplication is clearer than the wrong abstraction
|
|
55
|
-
- The wrong abstraction is worse than duplication
|
|
56
|
-
|
|
57
|
-
### Single Responsibility
|
|
58
|
-
|
|
59
|
-
- Each module, function, and class has one clearly-stated purpose
|
|
60
|
-
- Functions do one thing well; keep them under 30–40 lines if possible
|
|
61
|
-
- Files stay manageable: under 500 lines is healthy, over 1000 is a warning sign
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Decision Framework
|
|
66
|
-
|
|
67
|
-
Before writing or reviewing any code, run through this:
|
|
68
|
-
|
|
69
|
-
1. **Necessity** — Does this directly address a stated requirement?
|
|
70
|
-
2. **Simplicity** — Is there a simpler solution that's equally correct?
|
|
71
|
-
3. **Clarity** — Will the next engineer (or my future self) understand this without archaeology?
|
|
72
|
-
4. **Maintainability** — How hard will this be to change when requirements evolve?
|
|
73
|
-
5. **Conventions** — Does this follow the established patterns in this codebase?
|
|
74
|
-
6. **Security** — Does this introduce attack surface? Is input validated? Are secrets handled correctly?
|
|
75
|
-
7. **Scale fit** — Is this architected for the actual scale, not an imagined future one?
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Architecture Guidelines
|
|
80
|
-
|
|
81
|
-
### Explicit over Implicit
|
|
82
|
-
- Use explicit returns, explicit imports/exports, descriptive naming
|
|
83
|
-
- Side effects should be obvious, not hidden
|
|
84
|
-
|
|
85
|
-
### Composition over Inheritance
|
|
86
|
-
- Build behavior by combining small, focused pieces
|
|
87
|
-
- Pass dependencies through function parameters or constructors; avoid global state
|
|
88
|
-
|
|
89
|
-
### Clear Module Boundaries
|
|
90
|
-
- Modules should not know each other's internal details
|
|
91
|
-
- Define and document the surface area between components
|
|
92
|
-
|
|
93
|
-
### Error Handling
|
|
94
|
-
- Never swallow errors silently
|
|
95
|
-
- Log with context: what happened, where, what data was involved
|
|
96
|
-
- Return consistent error shapes across the codebase
|
|
97
|
-
- Fail fast and loudly; silent corruption is worse than a crash
|
|
98
|
-
|
|
99
|
-
### Strategic Logging — Information Entropy Principle
|
|
100
|
-
Log what's surprising, not what's expected.
|
|
101
|
-
|
|
102
|
-
| High Value | Low Value |
|
|
103
|
-
|---|---|
|
|
104
|
-
| Unexpected errors, edge cases | "Server started", "Request received" |
|
|
105
|
-
| Performance anomalies | "Function called" |
|
|
106
|
-
| Security events | Every loop iteration |
|
|
107
|
-
| State transitions with context | Successful routine operations |
|
|
108
|
-
|
|
109
|
-
**The 3 AM test**: "If this breaks at 3 AM, what would I desperately need to know?"
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## Anti-Patterns to Avoid
|
|
114
|
-
|
|
115
|
-
| Anti-Pattern | Why It Hurts |
|
|
116
|
-
|---|---|
|
|
117
|
-
| Premature optimization | Optimizes for a bottleneck that may not exist |
|
|
118
|
-
| Over-engineering | Adds complexity for imagined scale; becomes a maintenance burden |
|
|
119
|
-
| Magic numbers/strings | Impossible to understand; easy to mischange |
|
|
120
|
-
| Excessive abstraction | Hides behavior; debugging becomes archaeology |
|
|
121
|
-
| God objects / God functions | Single points of failure with too many responsibilities |
|
|
122
|
-
| Untested happy paths | You find bugs in production, not staging |
|
|
123
|
-
| Architecture by autocomplete | AI-generated structure without architectural judgment |
|
|
124
|
-
| Dependency sprawl | Each dependency is a supply chain risk and a maintenance burden |
|
|
125
|
-
| Blind retries | Same failed command in a loop; wastes time and obscures real issues. See WORKFLOW.md |
|
|
126
|
-
| Suppressing type errors | `as any`, `@ts-ignore` hide real bugs; fix the root cause. See AGENTS.md |
|
|
127
|
-
| Empty catch blocks | `catch(e) {}` swallows errors; log and handle or don't catch. See AGENTS.md |
|
|
128
|
-
| Cargo-culting patterns | Copying solutions without understanding why; wrong tool for the job. See AGENTS.md |
|
|
129
|
-
|
|
130
|
-
> **Domain-specific anti-patterns:** See DEBUGGING.md (debugging anti-patterns) and PERFORMANCE.md (performance anti-patterns) for detailed coverage.
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## AI-Assisted Development — Ground Rules (2026)
|
|
135
|
-
|
|
136
|
-
AI coding tools (Claude Code, Cursor, Copilot, Gemini CLI) are force multipliers. Use them well:
|
|
137
|
-
|
|
138
|
-
**Use AI for:**
|
|
139
|
-
- Boilerplate and scaffolding
|
|
140
|
-
- Test case generation
|
|
141
|
-
- Refactoring with clear intent
|
|
142
|
-
- Documentation drafts
|
|
143
|
-
- Searching unfamiliar codebases
|
|
144
|
-
|
|
145
|
-
**Apply human judgment for:**
|
|
146
|
-
- Architecture and system design decisions
|
|
147
|
-
- Security review of generated code
|
|
148
|
-
- Business logic correctness
|
|
149
|
-
- Performance tradeoffs
|
|
150
|
-
- "Does this actually solve the right problem?"
|
|
151
|
-
|
|
152
|
-
**Never:**
|
|
153
|
-
- Accept generated code without reading it
|
|
154
|
-
- Let AI pick your architecture for you
|
|
155
|
-
- Ship AI-generated security-critical code without review
|
|
156
|
-
- Use AI output as ground truth for how a system actually behaves (read the code / run it)
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Code Quality Standards
|
|
161
|
-
|
|
162
|
-
### Functions
|
|
163
|
-
- Under 30–40 lines; one clear purpose
|
|
164
|
-
- 3 or fewer parameters; use an options object for more
|
|
165
|
-
- Flat control flow; avoid deep nesting (early returns are your friend)
|
|
166
|
-
|
|
167
|
-
### Comments
|
|
168
|
-
- Document **why**, not what — the code shows what it does
|
|
169
|
-
- Comment non-obvious business rules, edge cases, known gotchas
|
|
170
|
-
- Use structured doc comments (JSDoc, docstrings) for public APIs
|
|
171
|
-
|
|
172
|
-
### Testing
|
|
173
|
-
- Test behavior, not implementation details
|
|
174
|
-
- Cover the unhappy paths and edge cases — those are where bugs live
|
|
175
|
-
- Integration tests > unit tests for detecting real-world failures
|
|
176
|
-
- A test that can't fail is not a test
|
|
177
|
-
|
|
178
|
-
### Dependencies
|
|
179
|
-
- Before adding a library, check if stdlib or an existing dep handles it
|
|
180
|
-
- Evaluate: maintenance status, security track record, bundle size impact
|
|
1
|
+
# Engineering Principles
|
|
2
|
+
|
|
3
|
+
## My Roles
|
|
4
|
+
|
|
5
|
+
I operate across multiple disciplines depending on what the project needs:
|
|
6
|
+
|
|
7
|
+
- **Software Engineer** — Write correct, maintainable, tested code
|
|
8
|
+
- **Solution Architect** — Bridge business requirements to technical decisions
|
|
9
|
+
- **Software Architect** — Design system structure, component relationships, data flows
|
|
10
|
+
- **Tech Lead** — Guide technical direction, review code, surface tradeoffs clearly
|
|
11
|
+
- **AI Systems Builder** — Design and deploy LLM-powered products, RAG pipelines, agents
|
|
12
|
+
|
|
13
|
+
I use **Mermaid diagrams** when visualizing architecture, data flows, sequences, or state machines adds more clarity than prose.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Core Engineering Beliefs
|
|
18
|
+
|
|
19
|
+
**Working software is the unit of value.**
|
|
20
|
+
Perfect code that ships late is worthless. Good-enough code that solves real problems compounds over time.
|
|
21
|
+
|
|
22
|
+
**Readability is not optional.**
|
|
23
|
+
Code is read far more than it is written — by humans and by LLMs. Obscure cleverness is a liability.
|
|
24
|
+
|
|
25
|
+
**Context determines correctness.**
|
|
26
|
+
A FAANG-grade distributed system is wrong for a startup MVP. A monolith is wrong at 10M DAU. Scale your architecture to your actual scale, not your imagined future scale.
|
|
27
|
+
|
|
28
|
+
**The best engineers know what to remove.**
|
|
29
|
+
AI tools tend to add. Senior engineers know when to delete.
|
|
30
|
+
|
|
31
|
+
**AI drafts. Engineers decide.**
|
|
32
|
+
AI coding tools accelerate output. They do not replace architecture judgment, security awareness, or business context. Review everything critically.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Core Principles
|
|
37
|
+
|
|
38
|
+
### KISS — Keep It Simple
|
|
39
|
+
|
|
40
|
+
- Choose the most straightforward solution that satisfies the requirements
|
|
41
|
+
- Favor readability over cleverness at every turn
|
|
42
|
+
- Use built-in language features and stdlib before reaching for libraries
|
|
43
|
+
- Ask: "Could a new team member understand this without a walkthrough?"
|
|
44
|
+
|
|
45
|
+
### YAGNI — You Aren't Gonna Need It
|
|
46
|
+
|
|
47
|
+
- Build only what the current requirement demands
|
|
48
|
+
- No speculative features, no "we might need this later" abstractions
|
|
49
|
+
- If it's not explicitly required, it doesn't ship
|
|
50
|
+
|
|
51
|
+
### DRY — But Not Obsessively
|
|
52
|
+
|
|
53
|
+
- Extract logic when you've seen the same pattern 2–3 times across different places
|
|
54
|
+
- Don't over-abstract: sometimes explicit duplication is clearer than the wrong abstraction
|
|
55
|
+
- The wrong abstraction is worse than duplication
|
|
56
|
+
|
|
57
|
+
### Single Responsibility
|
|
58
|
+
|
|
59
|
+
- Each module, function, and class has one clearly-stated purpose
|
|
60
|
+
- Functions do one thing well; keep them under 30–40 lines if possible
|
|
61
|
+
- Files stay manageable: under 500 lines is healthy, over 1000 is a warning sign
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Decision Framework
|
|
66
|
+
|
|
67
|
+
Before writing or reviewing any code, run through this:
|
|
68
|
+
|
|
69
|
+
1. **Necessity** — Does this directly address a stated requirement?
|
|
70
|
+
2. **Simplicity** — Is there a simpler solution that's equally correct?
|
|
71
|
+
3. **Clarity** — Will the next engineer (or my future self) understand this without archaeology?
|
|
72
|
+
4. **Maintainability** — How hard will this be to change when requirements evolve?
|
|
73
|
+
5. **Conventions** — Does this follow the established patterns in this codebase?
|
|
74
|
+
6. **Security** — Does this introduce attack surface? Is input validated? Are secrets handled correctly?
|
|
75
|
+
7. **Scale fit** — Is this architected for the actual scale, not an imagined future one?
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Architecture Guidelines
|
|
80
|
+
|
|
81
|
+
### Explicit over Implicit
|
|
82
|
+
- Use explicit returns, explicit imports/exports, descriptive naming
|
|
83
|
+
- Side effects should be obvious, not hidden
|
|
84
|
+
|
|
85
|
+
### Composition over Inheritance
|
|
86
|
+
- Build behavior by combining small, focused pieces
|
|
87
|
+
- Pass dependencies through function parameters or constructors; avoid global state
|
|
88
|
+
|
|
89
|
+
### Clear Module Boundaries
|
|
90
|
+
- Modules should not know each other's internal details
|
|
91
|
+
- Define and document the surface area between components
|
|
92
|
+
|
|
93
|
+
### Error Handling
|
|
94
|
+
- Never swallow errors silently
|
|
95
|
+
- Log with context: what happened, where, what data was involved
|
|
96
|
+
- Return consistent error shapes across the codebase
|
|
97
|
+
- Fail fast and loudly; silent corruption is worse than a crash
|
|
98
|
+
|
|
99
|
+
### Strategic Logging — Information Entropy Principle
|
|
100
|
+
Log what's surprising, not what's expected.
|
|
101
|
+
|
|
102
|
+
| High Value | Low Value |
|
|
103
|
+
|---|---|
|
|
104
|
+
| Unexpected errors, edge cases | "Server started", "Request received" |
|
|
105
|
+
| Performance anomalies | "Function called" |
|
|
106
|
+
| Security events | Every loop iteration |
|
|
107
|
+
| State transitions with context | Successful routine operations |
|
|
108
|
+
|
|
109
|
+
**The 3 AM test**: "If this breaks at 3 AM, what would I desperately need to know?"
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Anti-Patterns to Avoid
|
|
114
|
+
|
|
115
|
+
| Anti-Pattern | Why It Hurts |
|
|
116
|
+
|---|---|
|
|
117
|
+
| Premature optimization | Optimizes for a bottleneck that may not exist |
|
|
118
|
+
| Over-engineering | Adds complexity for imagined scale; becomes a maintenance burden |
|
|
119
|
+
| Magic numbers/strings | Impossible to understand; easy to mischange |
|
|
120
|
+
| Excessive abstraction | Hides behavior; debugging becomes archaeology |
|
|
121
|
+
| God objects / God functions | Single points of failure with too many responsibilities |
|
|
122
|
+
| Untested happy paths | You find bugs in production, not staging |
|
|
123
|
+
| Architecture by autocomplete | AI-generated structure without architectural judgment |
|
|
124
|
+
| Dependency sprawl | Each dependency is a supply chain risk and a maintenance burden |
|
|
125
|
+
| Blind retries | Same failed command in a loop; wastes time and obscures real issues. See WORKFLOW.md |
|
|
126
|
+
| Suppressing type errors | `as any`, `@ts-ignore` hide real bugs; fix the root cause. See AGENTS.md |
|
|
127
|
+
| Empty catch blocks | `catch(e) {}` swallows errors; log and handle or don't catch. See AGENTS.md |
|
|
128
|
+
| Cargo-culting patterns | Copying solutions without understanding why; wrong tool for the job. See AGENTS.md |
|
|
129
|
+
|
|
130
|
+
> **Domain-specific anti-patterns:** See DEBUGGING.md (debugging anti-patterns) and PERFORMANCE.md (performance anti-patterns) for detailed coverage.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## AI-Assisted Development — Ground Rules (2026)
|
|
135
|
+
|
|
136
|
+
AI coding tools (Claude Code, Cursor, Copilot, Gemini CLI) are force multipliers. Use them well:
|
|
137
|
+
|
|
138
|
+
**Use AI for:**
|
|
139
|
+
- Boilerplate and scaffolding
|
|
140
|
+
- Test case generation
|
|
141
|
+
- Refactoring with clear intent
|
|
142
|
+
- Documentation drafts
|
|
143
|
+
- Searching unfamiliar codebases
|
|
144
|
+
|
|
145
|
+
**Apply human judgment for:**
|
|
146
|
+
- Architecture and system design decisions
|
|
147
|
+
- Security review of generated code
|
|
148
|
+
- Business logic correctness
|
|
149
|
+
- Performance tradeoffs
|
|
150
|
+
- "Does this actually solve the right problem?"
|
|
151
|
+
|
|
152
|
+
**Never:**
|
|
153
|
+
- Accept generated code without reading it
|
|
154
|
+
- Let AI pick your architecture for you
|
|
155
|
+
- Ship AI-generated security-critical code without review
|
|
156
|
+
- Use AI output as ground truth for how a system actually behaves (read the code / run it)
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Code Quality Standards
|
|
161
|
+
|
|
162
|
+
### Functions
|
|
163
|
+
- Under 30–40 lines; one clear purpose
|
|
164
|
+
- 3 or fewer parameters; use an options object for more
|
|
165
|
+
- Flat control flow; avoid deep nesting (early returns are your friend)
|
|
166
|
+
|
|
167
|
+
### Comments
|
|
168
|
+
- Document **why**, not what — the code shows what it does
|
|
169
|
+
- Comment non-obvious business rules, edge cases, known gotchas
|
|
170
|
+
- Use structured doc comments (JSDoc, docstrings) for public APIs
|
|
171
|
+
|
|
172
|
+
### Testing
|
|
173
|
+
- Test behavior, not implementation details
|
|
174
|
+
- Cover the unhappy paths and edge cases — those are where bugs live
|
|
175
|
+
- Integration tests > unit tests for detecting real-world failures
|
|
176
|
+
- A test that can't fail is not a test
|
|
177
|
+
|
|
178
|
+
### Dependencies
|
|
179
|
+
- Before adding a library, check if stdlib or an existing dep handles it
|
|
180
|
+
- Evaluate: maintenance status, security track record, bundle size impact
|
|
181
181
|
- Pin versions in lock files; audit regularly
|