recall-os 0.1.1 → 0.2.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/README.md +43 -20
- package/dist/cli.js +1791 -792
- package/dist/cli.js.map +1 -1
- package/dist/index.js +1791 -792
- package/dist/index.js.map +1 -1
- package/examples/generated-flutter/docs/20-security/SECURITY_MODEL.md +25 -4
- package/examples/generated-flutter/docs/20-security/THREAT_MODEL.md +35 -3
- package/examples/generated-generic/docs/20-security/SECURITY_MODEL.md +25 -4
- package/examples/generated-generic/docs/20-security/THREAT_MODEL.md +35 -3
- package/examples/generated-ios-swift/docs/20-security/SECURITY_MODEL.md +25 -4
- package/examples/generated-ios-swift/docs/20-security/THREAT_MODEL.md +35 -3
- package/examples/generated-kotlin-android/docs/20-security/SECURITY_MODEL.md +25 -4
- package/examples/generated-kotlin-android/docs/20-security/THREAT_MODEL.md +35 -3
- package/examples/generated-laravel-api/.recall/config.json +17 -0
- package/examples/generated-laravel-api/.recall/hooks/pre-commit +9 -0
- package/examples/generated-laravel-api/AGENTS.md +15 -0
- package/examples/generated-laravel-api/CLAUDE.md +9 -0
- package/examples/generated-laravel-api/README.md +11 -0
- package/examples/generated-laravel-api/docs/00-product/BRD.md +9 -0
- package/examples/generated-laravel-api/docs/00-product/PRD.md +13 -0
- package/examples/generated-laravel-api/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-laravel-api/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-laravel-api/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-laravel-api/docs/20-security/SECURITY_MODEL.md +32 -0
- package/examples/generated-laravel-api/docs/20-security/THREAT_MODEL.md +39 -0
- package/examples/generated-laravel-api/docs/30-modules/README.md +17 -0
- package/examples/generated-laravel-api/docs/40-features/README.md +22 -0
- package/examples/generated-laravel-api/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-laravel-api/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-laravel-api/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-laravel-api/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-laravel-api/docs/adrs/README.md +9 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-api-design-rest.md +31 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-application-structure.md +30 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-auth-sanctum.md +30 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-database-eloquent.md +31 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-framework.md +29 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-queues-horizon.md +29 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-testing-pest.md +30 -0
- package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-validation-authorization.md +30 -0
- package/examples/generated-laravel-api/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-laravel-api/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-laravel-api/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-laravel-api/docs/ai/presets/laravel-api-guidance.md +62 -0
- package/examples/generated-laravel-react/.recall/config.json +17 -0
- package/examples/generated-laravel-react/.recall/hooks/pre-commit +9 -0
- package/examples/generated-laravel-react/AGENTS.md +15 -0
- package/examples/generated-laravel-react/CLAUDE.md +9 -0
- package/examples/generated-laravel-react/README.md +11 -0
- package/examples/generated-laravel-react/docs/00-product/BRD.md +9 -0
- package/examples/generated-laravel-react/docs/00-product/PRD.md +13 -0
- package/examples/generated-laravel-react/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-laravel-react/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-laravel-react/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-laravel-react/docs/20-security/SECURITY_MODEL.md +32 -0
- package/examples/generated-laravel-react/docs/20-security/THREAT_MODEL.md +39 -0
- package/examples/generated-laravel-react/docs/30-modules/README.md +17 -0
- package/examples/generated-laravel-react/docs/40-features/README.md +22 -0
- package/examples/generated-laravel-react/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-laravel-react/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-laravel-react/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-laravel-react/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-laravel-react/docs/adrs/README.md +9 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-application-structure.md +30 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-auth-sanctum.md +31 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-database-eloquent.md +31 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-framework.md +29 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-frontend-inertia-react.md +31 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-queues-horizon.md +29 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-testing-pest.md +30 -0
- package/examples/generated-laravel-react/docs/adrs/proposed/ADR-PROPOSED-laravel-react-validation-authorization.md +30 -0
- package/examples/generated-laravel-react/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-laravel-react/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-laravel-react/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-laravel-react/docs/ai/presets/laravel-react-guidance.md +64 -0
- package/examples/generated-laravel-vue/.recall/config.json +17 -0
- package/examples/generated-laravel-vue/.recall/hooks/pre-commit +9 -0
- package/examples/generated-laravel-vue/AGENTS.md +15 -0
- package/examples/generated-laravel-vue/CLAUDE.md +9 -0
- package/examples/generated-laravel-vue/README.md +11 -0
- package/examples/generated-laravel-vue/docs/00-product/BRD.md +9 -0
- package/examples/generated-laravel-vue/docs/00-product/PRD.md +13 -0
- package/examples/generated-laravel-vue/docs/10-architecture/ARCHITECTURE.md +11 -0
- package/examples/generated-laravel-vue/docs/10-architecture/FILE_WRITE_POLICY.md +8 -0
- package/examples/generated-laravel-vue/docs/10-architecture/MEMORY_ENGINE.md +16 -0
- package/examples/generated-laravel-vue/docs/20-security/SECURITY_MODEL.md +32 -0
- package/examples/generated-laravel-vue/docs/20-security/THREAT_MODEL.md +39 -0
- package/examples/generated-laravel-vue/docs/30-modules/README.md +17 -0
- package/examples/generated-laravel-vue/docs/40-features/README.md +22 -0
- package/examples/generated-laravel-vue/docs/50-quality/QUALITY_GATES.md +11 -0
- package/examples/generated-laravel-vue/docs/50-quality/TESTING_STRATEGY.md +5 -0
- package/examples/generated-laravel-vue/docs/60-engineering/AI_AGENT_RULES.md +6 -0
- package/examples/generated-laravel-vue/docs/60-engineering/ENGINEERING_STANDARDS.md +11 -0
- package/examples/generated-laravel-vue/docs/adrs/README.md +9 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-application-structure.md +30 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-auth-sanctum.md +31 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-database-eloquent.md +31 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-framework.md +29 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-frontend-inertia-vue.md +31 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-queues-horizon.md +29 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-testing-pest.md +30 -0
- package/examples/generated-laravel-vue/docs/adrs/proposed/ADR-PROPOSED-laravel-vue-validation-authorization.md +30 -0
- package/examples/generated-laravel-vue/docs/ai/AI_AGENTS_SKILLS_MCP_STRATEGY.md +7 -0
- package/examples/generated-laravel-vue/docs/ai/MCP_STRATEGY.md +6 -0
- package/examples/generated-laravel-vue/docs/ai/RECALL_COMMANDS.md +133 -0
- package/examples/generated-laravel-vue/docs/ai/presets/laravel-vue-guidance.md +64 -0
- package/examples/generated-nextjs/docs/20-security/SECURITY_MODEL.md +25 -4
- package/examples/generated-nextjs/docs/20-security/THREAT_MODEL.md +35 -3
- package/examples/generated-python-fastapi/docs/20-security/SECURITY_MODEL.md +25 -4
- package/examples/generated-python-fastapi/docs/20-security/THREAT_MODEL.md +35 -3
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Proposed ADR: Keep controllers thin with Action and Service classes
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
Business logic tends to accumulate in controllers and models, which makes it hard to test and reuse.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider thin controllers that delegate to single-purpose Action or Service classes, with outbound
|
|
14
|
+
payloads shaped by API Resources (or typed Inertia props). This is not accepted until a human
|
|
15
|
+
accepts it.
|
|
16
|
+
|
|
17
|
+
## Alternatives Considered
|
|
18
|
+
|
|
19
|
+
- Fat controllers.
|
|
20
|
+
- Fat models holding business logic.
|
|
21
|
+
|
|
22
|
+
## Consequences
|
|
23
|
+
|
|
24
|
+
- Reusable, unit-testable business logic and consistent response shapes.
|
|
25
|
+
- More classes and a convention the team must follow.
|
|
26
|
+
|
|
27
|
+
## Related Documents
|
|
28
|
+
|
|
29
|
+
- `docs/ai/presets/laravel-api-guidance.md` — the proposed Laravel stack guidance.
|
|
30
|
+
- `docs/10-architecture/ARCHITECTURE.md` — record the accepted architecture here once promoted.
|
package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-auth-sanctum.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Proposed ADR: Use Laravel Sanctum for authentication
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The application needs authentication for first-party clients (a separate SPA and mobile apps).
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider Laravel Sanctum: the cookie-based guard for first-party SPAs and API tokens for mobile or
|
|
14
|
+
scripted clients. This is not accepted until a human reviews and accepts it.
|
|
15
|
+
|
|
16
|
+
## Alternatives Considered
|
|
17
|
+
|
|
18
|
+
- Laravel Passport for full OAuth2 (third-party delegated access).
|
|
19
|
+
- A managed identity provider.
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
|
|
23
|
+
- Lightweight first-party auth without standing up a full OAuth2 server.
|
|
24
|
+
- If third-party delegated access is ever required, revisit with Passport.
|
|
25
|
+
|
|
26
|
+
## Related Documents
|
|
27
|
+
|
|
28
|
+
- `docs/ai/presets/laravel-api-guidance.md` — the proposed Laravel stack guidance.
|
|
29
|
+
- `docs/10-architecture/ARCHITECTURE.md` — record the accepted architecture here once promoted.
|
|
30
|
+
- `docs/20-security/SECURITY_MODEL.md` — record the accepted auth and session model here.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Proposed ADR: Use Eloquent and migrations on PostgreSQL
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The application needs a relational database and a schema workflow.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider PostgreSQL (MySQL as the alternative) accessed through Eloquent and versioned migrations,
|
|
14
|
+
awaiting human acceptance.
|
|
15
|
+
|
|
16
|
+
## Alternatives Considered
|
|
17
|
+
|
|
18
|
+
- MySQL or MariaDB.
|
|
19
|
+
- The query builder or raw SQL without Eloquent.
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
|
|
23
|
+
- Expressive models, relationships, and reproducible schema migrations.
|
|
24
|
+
- Requires discipline against N+1 queries and unbounded result sets.
|
|
25
|
+
|
|
26
|
+
## Related Documents
|
|
27
|
+
|
|
28
|
+
- `docs/ai/presets/laravel-api-guidance.md` — the proposed Laravel stack guidance.
|
|
29
|
+
- `docs/10-architecture/ARCHITECTURE.md` — record the accepted architecture here once promoted.
|
|
30
|
+
- `docs/50-quality/TESTING_STRATEGY.md` — how database tests use factories and a disposable
|
|
31
|
+
database.
|
package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-framework.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Proposed ADR: Use Laravel
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The team needs a productive, batteries-included PHP framework for a production web application.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider Laravel 12 on PHP 8.3+ as the application framework, following its standard conventions and
|
|
14
|
+
directory structure. This is not accepted until a human reviews and accepts it.
|
|
15
|
+
|
|
16
|
+
## Alternatives Considered
|
|
17
|
+
|
|
18
|
+
- Symfony for a more component-assembled approach.
|
|
19
|
+
- A different language or framework entirely.
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
|
|
23
|
+
- A mature ecosystem (Eloquent, queues, Sanctum, Horizon) and strong conventions.
|
|
24
|
+
- Couples the application to Laravel's conventions and release cadence.
|
|
25
|
+
|
|
26
|
+
## Related Documents
|
|
27
|
+
|
|
28
|
+
- `docs/ai/presets/laravel-api-guidance.md` — the proposed Laravel stack guidance.
|
|
29
|
+
- `docs/10-architecture/ARCHITECTURE.md` — record the accepted architecture here once promoted.
|
package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-queues-horizon.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Proposed ADR: Run slow work on queues
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
Email, exports, and third-party calls slow down requests and can fail independently.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider queued jobs for slow or failure-prone work, using the database driver early and Redis with
|
|
14
|
+
Laravel Horizon as throughput grows. This is not accepted until a human reviews and accepts it.
|
|
15
|
+
|
|
16
|
+
## Alternatives Considered
|
|
17
|
+
|
|
18
|
+
- Doing the work synchronously in the request.
|
|
19
|
+
- An external task queue or serverless functions.
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
|
|
23
|
+
- Faster responses and isolated, retryable background work.
|
|
24
|
+
- Adds a worker process and queue infrastructure to operate and monitor.
|
|
25
|
+
|
|
26
|
+
## Related Documents
|
|
27
|
+
|
|
28
|
+
- `docs/ai/presets/laravel-api-guidance.md` — the proposed Laravel stack guidance.
|
|
29
|
+
- `docs/10-architecture/ARCHITECTURE.md` — record the accepted architecture here once promoted.
|
package/examples/generated-laravel-api/docs/adrs/proposed/ADR-PROPOSED-laravel-api-testing-pest.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Proposed ADR: Use Pest for testing
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
The application needs a fast, readable testing workflow.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Consider Pest with model factories and feature tests that exercise real routes against a disposable
|
|
14
|
+
database, awaiting human acceptance.
|
|
15
|
+
|
|
16
|
+
## Alternatives Considered
|
|
17
|
+
|
|
18
|
+
- PHPUnit directly.
|
|
19
|
+
- A thinner test suite focused only on unit tests.
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
|
|
23
|
+
- Concise, expressive tests that cover routes, validation, and authorization.
|
|
24
|
+
- The team standardizes on Pest's syntax and plugins.
|
|
25
|
+
|
|
26
|
+
## Related Documents
|
|
27
|
+
|
|
28
|
+
- `docs/ai/presets/laravel-api-guidance.md` — the proposed Laravel stack guidance.
|
|
29
|
+
- `docs/10-architecture/ARCHITECTURE.md` — record the accepted architecture here once promoted.
|
|
30
|
+
- `docs/50-quality/TESTING_STRATEGY.md` — record the accepted testing approach here.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Proposed ADR: Validate with Form Requests and authorize with Policies
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Proposed
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
Input validation and authorization must be consistent and centralized, not scattered across
|
|
10
|
+
controllers.
|
|
11
|
+
|
|
12
|
+
## Decision
|
|
13
|
+
|
|
14
|
+
Consider Form Requests for validation (and request-level authorization) plus Policies and Gates for
|
|
15
|
+
per-model and per-action permission checks, awaiting human acceptance.
|
|
16
|
+
|
|
17
|
+
## Alternatives Considered
|
|
18
|
+
|
|
19
|
+
- Inline validation and authorization in controllers.
|
|
20
|
+
- A third-party permissions package layered on top.
|
|
21
|
+
|
|
22
|
+
## Consequences
|
|
23
|
+
|
|
24
|
+
- Controllers stay thin; validation and authorization are testable in isolation.
|
|
25
|
+
- Every state-changing action must have an explicit authorization path.
|
|
26
|
+
|
|
27
|
+
## Related Documents
|
|
28
|
+
|
|
29
|
+
- `docs/ai/presets/laravel-api-guidance.md` — the proposed Laravel stack guidance.
|
|
30
|
+
- `docs/10-architecture/ARCHITECTURE.md` — record the accepted architecture here once promoted.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Recall OS Commands
|
|
2
|
+
|
|
3
|
+
This document records the Recall OS commands available to humans and AI agents.
|
|
4
|
+
|
|
5
|
+
## Completion Gate
|
|
6
|
+
|
|
7
|
+
Before claiming implementation work is complete, run:
|
|
8
|
+
|
|
9
|
+
```txt
|
|
10
|
+
pnpm test:run
|
|
11
|
+
pnpm typecheck
|
|
12
|
+
recall doctor
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If `recall doctor` reports errors, fix them or report why they cannot be fixed. If it reports
|
|
16
|
+
warnings, address them or record why they are acceptable.
|
|
17
|
+
|
|
18
|
+
Package binary behavior is covered by binary integration tests.
|
|
19
|
+
|
|
20
|
+
## Commands
|
|
21
|
+
|
|
22
|
+
### `recall init`
|
|
23
|
+
|
|
24
|
+
Initialize neutral repository memory.
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
|
|
28
|
+
- `--preset <id>`: apply optional preset guidance and proposed decisions.
|
|
29
|
+
- `--dry-run`: show planned writes without writing files.
|
|
30
|
+
- `--force`: overwrite existing files explicitly.
|
|
31
|
+
- `--reinit`: required with `--force` to overwrite an existing Recall OS installation (a directory
|
|
32
|
+
that already has `.recall/config.json`). Without it, `--force` refuses, protecting existing
|
|
33
|
+
repository memory.
|
|
34
|
+
|
|
35
|
+
Init also generates a tracked pre-commit hook at `.recall/hooks/pre-commit` that runs
|
|
36
|
+
`recall doctor` plus any `preCommitGates` in `.recall/config.json`. Init proposes, but does not run,
|
|
37
|
+
the activation command `git config core.hooksPath .recall/hooks`.
|
|
38
|
+
|
|
39
|
+
### `recall adopt`
|
|
40
|
+
|
|
41
|
+
Inspect an existing repository through read-only manifest and marker files, then write a proposed
|
|
42
|
+
adoption report and proposed framework ADRs for human review. Adopt never executes repository code
|
|
43
|
+
and never produces accepted memory.
|
|
44
|
+
|
|
45
|
+
Options:
|
|
46
|
+
|
|
47
|
+
- `--dry-run`: show planned writes without writing files.
|
|
48
|
+
- `--force`: overwrite existing files explicitly.
|
|
49
|
+
|
|
50
|
+
### `recall skill create <name>`
|
|
51
|
+
|
|
52
|
+
Generate a portable AI agent skill as `SKILL.md` for both Claude Code (`.claude/skills/`) and the
|
|
53
|
+
portable Agent Skills target (`.agents/skills/`). Known names use the built-in catalog; unknown
|
|
54
|
+
names produce a valid skeleton. Generated skills contain no scripts.
|
|
55
|
+
|
|
56
|
+
Options:
|
|
57
|
+
|
|
58
|
+
- `--dry-run`: show planned writes without writing files.
|
|
59
|
+
- `--force`: overwrite existing files explicitly.
|
|
60
|
+
|
|
61
|
+
### `recall skill list`
|
|
62
|
+
|
|
63
|
+
List the built-in catalog skills.
|
|
64
|
+
|
|
65
|
+
### `recall mcp add <server>`
|
|
66
|
+
|
|
67
|
+
Generate offline, proposed memory for an MCP server (for example `figma`) as
|
|
68
|
+
`docs/ai/mcp/<server>.md` plus a proposed adoption ADR. Recall OS never connects to the MCP server
|
|
69
|
+
or makes network calls; the agent records durable MCP-derived context into the generated memory for
|
|
70
|
+
human review. It also installs a `capture-mcp-context` agent skill that prompts the agent to record
|
|
71
|
+
that context.
|
|
72
|
+
|
|
73
|
+
Options:
|
|
74
|
+
|
|
75
|
+
- `--dry-run`: show planned writes without writing files.
|
|
76
|
+
- `--force`: overwrite existing files explicitly.
|
|
77
|
+
|
|
78
|
+
### `recall preset list`
|
|
79
|
+
|
|
80
|
+
List built-in presets.
|
|
81
|
+
|
|
82
|
+
### `recall feature create <name>`
|
|
83
|
+
|
|
84
|
+
Create feature memory docs under the configured features directory.
|
|
85
|
+
|
|
86
|
+
Options:
|
|
87
|
+
|
|
88
|
+
- `--dry-run`: show planned writes without writing files.
|
|
89
|
+
- `--force`: overwrite existing files explicitly.
|
|
90
|
+
|
|
91
|
+
### `recall adr create <title>`
|
|
92
|
+
|
|
93
|
+
Create a proposed ADR under the configured ADR directory.
|
|
94
|
+
|
|
95
|
+
Options:
|
|
96
|
+
|
|
97
|
+
- `--dry-run`: show planned writes without writing files.
|
|
98
|
+
- `--force`: overwrite existing files explicitly.
|
|
99
|
+
|
|
100
|
+
### `recall adr accept <name>`
|
|
101
|
+
|
|
102
|
+
Promote a proposed ADR to accepted repository memory. A proposal under
|
|
103
|
+
`docs/adrs/proposed/ADR-PROPOSED-<slug>.md` becomes a numbered, accepted `ADR-####-<slug>.md` and
|
|
104
|
+
the proposal is removed; an existing numbered Proposed ADR is accepted in place.
|
|
105
|
+
|
|
106
|
+
Options:
|
|
107
|
+
|
|
108
|
+
- `--dry-run`: show planned writes without writing files.
|
|
109
|
+
- `--force`: overwrite existing files explicitly.
|
|
110
|
+
|
|
111
|
+
### `recall module create <name>`
|
|
112
|
+
|
|
113
|
+
Create module memory docs under the configured modules directory.
|
|
114
|
+
|
|
115
|
+
Options:
|
|
116
|
+
|
|
117
|
+
- `--dry-run`: show planned writes without writing files.
|
|
118
|
+
- `--force`: overwrite existing files explicitly.
|
|
119
|
+
|
|
120
|
+
### `recall doctor`
|
|
121
|
+
|
|
122
|
+
Check whether repository memory is structurally healthy enough for AI-assisted work, whether basic
|
|
123
|
+
engineering evidence is present, and whether memory references decisions that exist and are
|
|
124
|
+
accepted.
|
|
125
|
+
|
|
126
|
+
Doctor also runs deterministic drift checks: feature or module memory that references a missing ADR
|
|
127
|
+
is an error, and memory that references a not-yet-accepted ADR is a warning.
|
|
128
|
+
|
|
129
|
+
Exit codes:
|
|
130
|
+
|
|
131
|
+
- `0`: healthy
|
|
132
|
+
- `1`: warnings only
|
|
133
|
+
- `2`: errors
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Laravel Preset Guidance (API / SPA backend)
|
|
2
|
+
|
|
3
|
+
This is proposed guidance, not accepted. Convert any architecture choice into a proposed ADR, then
|
|
4
|
+
an accepted ADR, before treating it as repository truth. Repository rules override model preference.
|
|
5
|
+
|
|
6
|
+
## The stack (proposed)
|
|
7
|
+
|
|
8
|
+
- Laravel 12 on PHP 8.3+, using the official conventions and directory layout.
|
|
9
|
+
- No server-rendered frontend: Laravel is an HTTP JSON API consumed by a separate SPA or mobile app.
|
|
10
|
+
- Database: PostgreSQL (MySQL is the alternative) through Eloquent and migrations.
|
|
11
|
+
- Auth: Laravel Sanctum for first-party SPA and mobile clients (Passport only if you need
|
|
12
|
+
third-party OAuth2).
|
|
13
|
+
- Background work: queues, with Redis and Laravel Horizon when throughput grows.
|
|
14
|
+
- Tests: Pest, with database factories and feature tests over real routes.
|
|
15
|
+
|
|
16
|
+
Controllers return JSON via API Resources; first-party SPAs authenticate with Sanctum cookies,
|
|
17
|
+
mobile clients with Sanctum tokens.
|
|
18
|
+
|
|
19
|
+
## Decision forks this stack forces
|
|
20
|
+
|
|
21
|
+
- Frontend delivery: Inertia (server-driven SPA) vs a decoupled API + separate SPA vs Blade +
|
|
22
|
+
Livewire.
|
|
23
|
+
- Auth: Sanctum (first-party SPA and mobile) vs Passport (third-party OAuth2) vs a managed identity
|
|
24
|
+
provider.
|
|
25
|
+
- Database: PostgreSQL vs MySQL, and where read scaling and queues live (Redis vs database driver).
|
|
26
|
+
- Authorization: Policies and Gates vs ad-hoc checks; validation via Form Requests vs inline.
|
|
27
|
+
- Business logic: thin controllers with Action/Service classes vs fat controllers and models.
|
|
28
|
+
- Testing: Pest vs PHPUnit.
|
|
29
|
+
|
|
30
|
+
## Recommended structure (proposed)
|
|
31
|
+
|
|
32
|
+
- Keep controllers thin: they validate, authorize, delegate, and return a response — nothing more.
|
|
33
|
+
- Put request validation **and** authorization in Form Requests (`authorize()` + `rules()`).
|
|
34
|
+
- Put per-model and per-action permission logic in Policies and Gates, not in controllers.
|
|
35
|
+
- Put business logic in single-purpose Action or Service classes, not in controllers or models.
|
|
36
|
+
- Shape every outbound payload with API Resources (or typed Inertia props), never raw models.
|
|
37
|
+
- Declare `$fillable` (or `$guarded`) explicitly on every Eloquent model to stop mass assignment.
|
|
38
|
+
|
|
39
|
+
## Data and performance (proposed)
|
|
40
|
+
|
|
41
|
+
- Eager-load relationships (`with(...)`) to avoid N+1 queries; enable `Model::preventLazyLoading()`
|
|
42
|
+
in local and CI.
|
|
43
|
+
- Wrap multi-write operations in database transactions.
|
|
44
|
+
- Paginate list endpoints; never return unbounded collections.
|
|
45
|
+
- Move email, exports, third-party calls, and other slow work into queued jobs.
|
|
46
|
+
- Cache expensive reads deliberately, with explicit invalidation.
|
|
47
|
+
|
|
48
|
+
## Testing (proposed)
|
|
49
|
+
|
|
50
|
+
- Write Pest feature tests that exercise real routes end to end, using `RefreshDatabase`.
|
|
51
|
+
- Build state with model factories, not hand-rolled fixtures.
|
|
52
|
+
- Test authorization explicitly: a forbidden action must assert a 403, not just a happy path.
|
|
53
|
+
- Cover validation failures, not only the success case.
|
|
54
|
+
|
|
55
|
+
## Security considerations (proposed)
|
|
56
|
+
|
|
57
|
+
- Validate every inbound request through Form Requests; persist only validated data.
|
|
58
|
+
- Authorize every state-changing action through a Policy or Gate.
|
|
59
|
+
- Keep secrets in `.env`; never commit `.env` or hardcode credentials.
|
|
60
|
+
- Apply rate limiting to auth and write endpoints.
|
|
61
|
+
- Keep mass assignment locked down and never trust client-supplied IDs without an ownership check.
|
|
62
|
+
- Scope Sanctum tokens to least privilege; SPA clients use the cookie guard with CSRF protection.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"templateVersion": "0.1.0",
|
|
4
|
+
"preset": "laravel-react",
|
|
5
|
+
"memoryProfile": "standard",
|
|
6
|
+
"mode": "standard",
|
|
7
|
+
"aiTools": [
|
|
8
|
+
"claude",
|
|
9
|
+
"codex"
|
|
10
|
+
],
|
|
11
|
+
"docsDir": "docs",
|
|
12
|
+
"featuresDir": "docs/40-features",
|
|
13
|
+
"modulesDir": "docs/30-modules",
|
|
14
|
+
"adrDir": "docs/adrs",
|
|
15
|
+
"writePolicy": "skip-existing",
|
|
16
|
+
"preCommitGates": []
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Recall OS pre-commit hook.
|
|
3
|
+
# Generated by `recall init`. Edit gates in .recall/config.json (preCommitGates),
|
|
4
|
+
# then re-run `recall init --force` to regenerate this hook.
|
|
5
|
+
# Enable once per clone with:
|
|
6
|
+
# git config core.hooksPath .recall/hooks
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
recall doctor
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# generated-laravel-react Agent Instructions
|
|
2
|
+
|
|
3
|
+
This repository uses Recall OS repository memory.
|
|
4
|
+
|
|
5
|
+
Start with durable source-of-truth docs under `docs/`.
|
|
6
|
+
|
|
7
|
+
Required reading:
|
|
8
|
+
|
|
9
|
+
- `docs/00-product/PRD.md`
|
|
10
|
+
- `docs/10-architecture/ARCHITECTURE.md`
|
|
11
|
+
- `docs/20-security/SECURITY_MODEL.md`
|
|
12
|
+
- `docs/50-quality/QUALITY_GATES.md`
|
|
13
|
+
- `docs/60-engineering/ENGINEERING_STANDARDS.md`
|
|
14
|
+
|
|
15
|
+
Repository rules override model preferences. If instructions conflict, stop and report the conflict.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# generated-laravel-react Claude Instructions
|
|
2
|
+
|
|
3
|
+
This file is loaded automatically every Claude session. The durable project memory lives in `docs/`;
|
|
4
|
+
do not rely on chat history as source of truth, and repository rules override model preference.
|
|
5
|
+
|
|
6
|
+
@AGENTS.md
|
|
7
|
+
|
|
8
|
+
Read the docs that `AGENTS.md` routes to before changing code or repository memory. A SessionStart
|
|
9
|
+
hook (`.claude/hooks/session-start.sh`) also injects a memory map at the start of each session.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Laravel + React Example
|
|
2
|
+
|
|
3
|
+
This folder shows the repository memory generated by:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
recall init --preset laravel-react
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The Laravel + React preset adds Inertia + React (the official starter-kit stack) guidance and
|
|
10
|
+
proposed decisions for the framework, Eloquent, Sanctum auth, Form Requests + Policies, queues, and
|
|
11
|
+
Pest. Those decisions remain proposed until a human accepts them in repository memory.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Repository Memory
|
|
2
|
+
|
|
3
|
+
Repository memory is the durable source of truth for humans and AI agents.
|
|
4
|
+
|
|
5
|
+
Source-of-truth order:
|
|
6
|
+
|
|
7
|
+
1. Accepted ADRs and repository decisions
|
|
8
|
+
2. Architecture docs
|
|
9
|
+
3. Engineering standards
|
|
10
|
+
4. Current PRD and accepted change requests
|
|
11
|
+
5. Security and testing docs
|
|
12
|
+
6. Module docs
|
|
13
|
+
7. Feature plans
|
|
14
|
+
8. Task files
|
|
15
|
+
9. External context
|
|
16
|
+
10. Chat history
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Security Model
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Draft — fill the prompted sections below with this repository's real model as it grows.
|
|
6
|
+
`recall doctor` flags these as warnings once the repository has real work (a feature, module, or
|
|
7
|
+
accepted decision).
|
|
8
|
+
|
|
9
|
+
## Baseline Rules
|
|
10
|
+
|
|
11
|
+
- Never commit secrets or credentials, and never read or copy `.env` files into docs.
|
|
12
|
+
- Validate and authorize untrusted input at every trust boundary.
|
|
13
|
+
- Do not add network, telemetry, cloud, MCP runtime, or AI API behavior without explicit review.
|
|
14
|
+
|
|
15
|
+
## Authentication And Authorization
|
|
16
|
+
|
|
17
|
+
Describe how this repository authenticates users or clients and how it authorizes actions, including
|
|
18
|
+
where those checks live.
|
|
19
|
+
|
|
20
|
+
## Secrets And Configuration
|
|
21
|
+
|
|
22
|
+
Describe where secrets live, how they are injected, and how configuration is kept out of version
|
|
23
|
+
control.
|
|
24
|
+
|
|
25
|
+
## Sensitive Data
|
|
26
|
+
|
|
27
|
+
Describe the sensitive or personal data this repository handles, and how it is protected at rest and
|
|
28
|
+
in transit.
|
|
29
|
+
|
|
30
|
+
## Dependencies And Supply Chain
|
|
31
|
+
|
|
32
|
+
Describe how third-party dependencies are vetted, pinned, and updated.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Threat Model
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Draft — replace the prompts below with this repository's real analysis as it grows. `recall doctor`
|
|
6
|
+
flags these as warnings once the repository has real work (a feature, module, or accepted decision).
|
|
7
|
+
|
|
8
|
+
## Assets
|
|
9
|
+
|
|
10
|
+
Describe what this repository must protect: user data, credentials, money, availability, or
|
|
11
|
+
reputation.
|
|
12
|
+
|
|
13
|
+
## Entry Points
|
|
14
|
+
|
|
15
|
+
Describe where untrusted input enters: HTTP endpoints, webhooks, file uploads, queues, CLI input, or
|
|
16
|
+
third-party callbacks.
|
|
17
|
+
|
|
18
|
+
## Trust Boundaries
|
|
19
|
+
|
|
20
|
+
Describe where trust changes: client to server, service to database, your code to third-party APIs.
|
|
21
|
+
|
|
22
|
+
## Threats
|
|
23
|
+
|
|
24
|
+
Describe the concrete threats that apply to this repository, by category:
|
|
25
|
+
|
|
26
|
+
- Spoofing — how identities are faked or sessions stolen.
|
|
27
|
+
- Tampering — how requests, data, or builds are altered (injection, mass assignment).
|
|
28
|
+
- Repudiation — actions that must remain auditable.
|
|
29
|
+
- Information disclosure — how sensitive data or secrets could leak.
|
|
30
|
+
- Denial of service — how the system can be overwhelmed or abused.
|
|
31
|
+
- Elevation of privilege — how a user could gain access they should not have.
|
|
32
|
+
|
|
33
|
+
## Mitigations
|
|
34
|
+
|
|
35
|
+
Describe the control in place or planned for each threat above.
|
|
36
|
+
|
|
37
|
+
## Open Risks
|
|
38
|
+
|
|
39
|
+
Describe accepted or unresolved risks and who owns them.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Module Memory
|
|
2
|
+
|
|
3
|
+
Module memory records what each important module owns, how it should be tested, and which decisions
|
|
4
|
+
affect it.
|
|
5
|
+
|
|
6
|
+
Future module folders should use:
|
|
7
|
+
|
|
8
|
+
```txt
|
|
9
|
+
docs/30-modules/<module>/
|
|
10
|
+
MODULE.md
|
|
11
|
+
TASKS.md
|
|
12
|
+
TEST_PLAN.md
|
|
13
|
+
DECISIONS.md
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Agents should update module memory when implementation changes responsibilities, boundaries, tests,
|
|
17
|
+
risks, or decisions.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Feature Memory
|
|
2
|
+
|
|
3
|
+
Feature memory records requirements, acceptance criteria, plans, tests, reviews, and completion
|
|
4
|
+
evidence.
|
|
5
|
+
|
|
6
|
+
Future feature folders should use:
|
|
7
|
+
|
|
8
|
+
```txt
|
|
9
|
+
docs/40-features/F-###-<feature>/
|
|
10
|
+
PRD.md
|
|
11
|
+
ACCEPTANCE.md
|
|
12
|
+
ARCHITECTURE_IMPACT.md
|
|
13
|
+
CHANGE_REQUESTS.md
|
|
14
|
+
PLAN.md
|
|
15
|
+
TASKS.md
|
|
16
|
+
TEST_PLAN.md
|
|
17
|
+
REVIEW.md
|
|
18
|
+
COMPLETION_REPORT.md
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Agents should not implement meaningful feature work without a feature plan or clear source-of-truth
|
|
22
|
+
reference.
|