@ankhorage/devtools 2.0.8 → 2.0.9
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/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @ankhorage/devtools
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
8
|
Shared tooling, repository automation, and agent standards for Ankhorage TypeScript projects
|
|
9
9
|
|
|
@@ -53,9 +53,16 @@ Valid profiles include:
|
|
|
53
53
|
- generated standalone application;
|
|
54
54
|
- an explicitly documented repository-specific profile such as Studio.
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
Implementation-owning Ankhorage packages are feature-first. Product, domain, and package
|
|
57
|
+
capabilities belong below `src/features/<feature>/`; do not place feature implementation modules
|
|
58
|
+
directly below `src/`. Keep only deliberate public facades and genuinely package-wide ownership
|
|
59
|
+
such as `src/types/`, `src/constants/`, and `src/utils/` at the source root. Contracts-only,
|
|
60
|
+
reusable UI/design-system, generated-application, and explicitly documented repository-specific
|
|
61
|
+
profiles may use their dedicated taxonomy instead of inventing fake features.
|
|
62
|
+
|
|
63
|
+
Inside each feature, introduce `domain/`, `application/`, `ports/`, `adapters/`, or
|
|
64
|
+
`composition/` only when those names communicate a real architectural role. Do not create empty
|
|
65
|
+
hexagonal layers for symmetry. Once a vocabulary is introduced, its combinations must be coherent:
|
|
59
66
|
|
|
60
67
|
- `domain/` may stand alone and must remain independent from outer mechanisms;
|
|
61
68
|
- `application/` coordinates use cases and may depend inward on domain policy and required ports;
|
|
@@ -82,8 +89,12 @@ Repository-root `examples/` contains complete user-facing examples. Each example
|
|
|
82
89
|
subdirectory. Test-only fixtures remain test-owned.
|
|
83
90
|
|
|
84
91
|
Package-level delivery edges such as `src/cli/`, `src/host/`, `src/app/`, or `src/platform/`
|
|
85
|
-
remain thin adapters/composition boundaries
|
|
86
|
-
|
|
92
|
+
remain thin adapters/composition boundaries outside feature ownership. Every public Ankh command
|
|
93
|
+
implementation must live below `src/cli/commands/`, and that filesystem mirrors the public command
|
|
94
|
+
path after the package prefix. For example, `ankh rules config validate` maps to
|
|
95
|
+
`src/cli/commands/config/validate.ts`. CLI provider/index modules register and compose commands;
|
|
96
|
+
they must not contain the command's application or domain behavior. Command modules parse input,
|
|
97
|
+
invoke the owning feature boundary, and render output.
|
|
87
98
|
|
|
88
99
|
Keep only deliberate public facades directly under `src/`. Public package subpaths must map to
|
|
89
100
|
explicit package exports; generic barrels are not an excuse to bypass ownership.
|
package/dist/tools/skills/assets/ankhorage-project-structure/references/architecture-profiles.md
CHANGED
|
@@ -3,25 +3,28 @@
|
|
|
3
3
|
Choose the profile from actual ownership and consumers. Profiles define allowed vocabulary and
|
|
4
4
|
dependency direction; they are not templates that require every listed directory.
|
|
5
5
|
|
|
6
|
-
## Simple
|
|
6
|
+
## Simple or value library
|
|
7
7
|
|
|
8
|
-
Use for
|
|
9
|
-
|
|
8
|
+
Use for deterministic values, parsers, constants, algorithms, and small runtime libraries without
|
|
9
|
+
application orchestration. Runtime-owning libraries are still feature-first: each coherent package
|
|
10
|
+
capability belongs below `src/features/<feature>/`, but a simple feature does not need hexagonal
|
|
11
|
+
role directories when it has no orchestration or external edge.
|
|
10
12
|
|
|
11
|
-
Typical
|
|
13
|
+
Typical form:
|
|
12
14
|
|
|
13
15
|
```text
|
|
14
16
|
src/
|
|
15
17
|
index.ts
|
|
16
|
-
|
|
18
|
+
features/
|
|
19
|
+
<feature>/
|
|
17
20
|
types/
|
|
18
21
|
constants/
|
|
19
22
|
utils/
|
|
20
23
|
```
|
|
21
24
|
|
|
22
25
|
Do not invent ports, adapters, application, or composition layers when there is no external edge to
|
|
23
|
-
abstract. Contracts
|
|
24
|
-
|
|
26
|
+
abstract. Contracts-only repositories follow the dedicated Contracts repository profile from the
|
|
27
|
+
main project-structure skill instead of this runtime-library profile.
|
|
25
28
|
|
|
26
29
|
## Reusable UI or design-system library
|
|
27
30
|
|
|
@@ -44,28 +47,13 @@ components or registries. Provider execution belongs outside reusable presentati
|
|
|
44
47
|
## Application, engine, or hybrid package
|
|
45
48
|
|
|
46
49
|
Use when the package owns use cases, state transitions, external systems, or several delivery edges.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
```text
|
|
52
|
-
src/
|
|
53
|
-
<domain>/
|
|
54
|
-
domain/
|
|
55
|
-
application/
|
|
56
|
-
ports/
|
|
57
|
-
adapters/
|
|
58
|
-
composition/
|
|
59
|
-
cli/
|
|
60
|
-
host/
|
|
61
|
-
app/
|
|
62
|
-
platform/
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Feature-first example:
|
|
50
|
+
These packages are feature-first: every product/domain/package capability is owned below
|
|
51
|
+
`src/features/<feature>/`. Do not use top-level domain folders or flat `src/*.ts` implementation
|
|
52
|
+
modules as an alternative ownership model.
|
|
66
53
|
|
|
67
54
|
```text
|
|
68
55
|
src/
|
|
56
|
+
index.ts
|
|
69
57
|
features/
|
|
70
58
|
<feature>/
|
|
71
59
|
domain/
|
|
@@ -74,6 +62,10 @@ src/
|
|
|
74
62
|
adapters/
|
|
75
63
|
composition/
|
|
76
64
|
cli/
|
|
65
|
+
commands/
|
|
66
|
+
types/
|
|
67
|
+
constants/
|
|
68
|
+
utils/
|
|
77
69
|
```
|
|
78
70
|
|
|
79
71
|
Only create the role directories that the capability actually needs. A pure domain feature can stop
|
|
@@ -81,35 +73,45 @@ at `domain/`; an in-memory use case need not invent an outbound adapter.
|
|
|
81
73
|
|
|
82
74
|
## Provider or platform adapter package
|
|
83
75
|
|
|
84
|
-
Use when the package deliberately implements an external technology boundary
|
|
76
|
+
Use when the package deliberately implements an external technology boundary. Provider capabilities
|
|
77
|
+
are still feature-owned; concrete technology remains at the feature's outer adapter boundary:
|
|
85
78
|
|
|
86
79
|
```text
|
|
87
80
|
src/
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
81
|
+
features/
|
|
82
|
+
<capability>/
|
|
83
|
+
domain/
|
|
84
|
+
application/
|
|
85
|
+
ports/
|
|
86
|
+
adapters/
|
|
87
|
+
composition/
|
|
92
88
|
cli/
|
|
89
|
+
commands/
|
|
93
90
|
```
|
|
94
91
|
|
|
95
92
|
Portable configuration and planning stay independent from SDK/runtime values. Concrete provider code
|
|
96
|
-
stays in adapters.
|
|
93
|
+
stays in adapters, and package-level delivery edges remain outside the feature.
|
|
97
94
|
|
|
98
95
|
## Tooling package
|
|
99
96
|
|
|
100
|
-
Command-centric tooling
|
|
97
|
+
Command-centric tooling remains feature-first for owned capabilities while the CLI stays an outer
|
|
98
|
+
delivery edge:
|
|
101
99
|
|
|
102
100
|
```text
|
|
103
101
|
src/
|
|
102
|
+
features/
|
|
103
|
+
<capability>/
|
|
104
|
+
domain/
|
|
105
|
+
application/
|
|
106
|
+
ports/
|
|
107
|
+
adapters/
|
|
108
|
+
composition/
|
|
104
109
|
cli/
|
|
105
|
-
|
|
106
|
-
application/
|
|
107
|
-
adapters/
|
|
108
|
-
composition/
|
|
110
|
+
commands/
|
|
109
111
|
```
|
|
110
112
|
|
|
111
113
|
Policy remains deterministic. Filesystem, process, registry, network, and GitHub behavior stay at
|
|
112
|
-
the edge.
|
|
114
|
+
the feature edge or package delivery edge rather than leaking into inner policy.
|
|
113
115
|
|
|
114
116
|
## Generated standalone application
|
|
115
117
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/devtools",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.9",
|
|
4
4
|
"description": "Shared tooling, repository automation, and agent standards for Ankhorage TypeScript projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/devtools#readme",
|