You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+9-71Lines changed: 9 additions & 71 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,9 +2,9 @@
2
2
3
3
## Project Overview
4
4
5
-
ArchML is a text-based DSL for defining software architecture alongside code. It covers functional, behavioral, and deployment architecture domains with consistency checking, navigable web views, and native Sphinx integration. Architecture files use the `.archml` extension.
5
+
ArchML is a text-based DSL for defining software architecture alongside code.
6
+
It covers functional, behavioral, and deployment architecture domains with consistency checking, navigable web views, and native Sphinx integration. Architecture files use the `.archml` extension.
6
7
7
-
The project is in early development. The DSL syntax for functional architecture is specified in `docs/LANGUAGE_SYNTAX.md`. The overall vision and landscape analysis are in `docs/PROJECT_SCOPE.md`.
8
8
9
9
## Tech Stack
10
10
@@ -13,42 +13,11 @@ The project is in early development. The DSL syntax for functional architecture
13
13
-**Linter/formatter**: ruff
14
14
-**Type checker**: ty
15
15
-**Testing**: pytest
16
-
-**Documentation**: Sphinx (ArchML views will embed natively via a Sphinx extension)
16
+
-**Documentation**: Sphinx
17
17
-**Distribution**: PyPI
18
18
19
-
## Project Structure (Target)
20
19
21
-
```
22
-
archml/
23
-
├── CLAUDE.md
24
-
├── README.md
25
-
├── LICENSE
26
-
├── pyproject.toml
27
-
├── docs/
28
-
│ ├── PROJECT_SCOPE.md
29
-
│ ├── LANGUAGE_SYNTAX.md
30
-
│ └── sphinx/ # Sphinx documentation source
31
-
├── src/
32
-
│ └── archml/
33
-
│ ├── __init__.py
34
-
│ ├── parser/ # Lexer and parser for .archml files
35
-
│ ├── model/ # Semantic model (systems, components, interfaces, etc.)
Full syntax specification: `docs/LANGUAGE_SYNTAX.md`
116
60
117
-
## Architecture and Design Decisions
118
61
119
-
- The parser produces an AST which is then lowered into a semantic model. Validation runs on the semantic model, not the AST.
120
-
- Views are not part of the architecture language. They will be defined in a separate view DSL that references model entities.
121
-
- The Sphinx extension reads `.archml` files directly and renders views inline — it is not an export pipeline.
122
-
- The CLI is the primary user entry point for parsing, validating, and generating views outside of Sphinx.
123
-
- A Language Server Protocol (LSP) implementation provides IDE support (diagnostics, completion, go-to-definition) for `.archml` files, with a VS Code extension as the primary client.
124
62
125
63
## Coding Conventions
126
64
@@ -129,6 +67,7 @@ Full syntax specification: `docs/LANGUAGE_SYNTAX.md`
129
67
- Prefer dataclasses or attrs for model types.
130
68
- Keep modules focused: one responsibility per module.
131
69
- The test directory structure mirrors the source structure. Every module in `src/archml/<package>/` has a corresponding directory in `tests/<package>/`. Test files are prefixed with `test_`: `src/archml/parser/lexer.py` -> `tests/parser/test_lexer.py`.
70
+
- Use proper docstrings for public functions.
132
71
- Every Python file follows this layout:
133
72
134
73
```python
@@ -142,7 +81,6 @@ import ...
142
81
# ###############
143
82
144
83
defpublic_function() -> None:
145
-
"""Docstring describing the function."""
146
84
...
147
85
148
86
# ################
@@ -153,4 +91,4 @@ def _private_helper() -> None:
153
91
...
154
92
```
155
93
156
-
The copyright header and imports come first. Public interface (classes, functions, constants) is separated from private implementation by section comments. All private members are prefixed with an underscore.
94
+
The copyright header and imports come first. Public interface (classes, functions, constants) is separated from private implementation by section comments. All private members are prefixed with an underscore.
0 commit comments