qualia-framework 3.2.1 → 3.3.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 +49 -18
- package/agents/plan-checker.md +158 -0
- package/agents/research-synthesizer.md +86 -0
- package/agents/researcher.md +119 -0
- package/agents/roadmapper.md +157 -0
- package/bin/install.js +101 -5
- package/package.json +2 -1
- package/references/questioning.md +123 -0
- package/skills/qualia-discuss/SKILL.md +115 -0
- package/skills/qualia-map/SKILL.md +145 -0
- package/skills/qualia-milestone/SKILL.md +148 -0
- package/skills/qualia-new/SKILL.md +374 -229
- package/skills/qualia-optimize/SKILL.md +1 -1
- package/skills/qualia-plan/SKILL.md +135 -30
- package/skills/qualia-research/SKILL.md +124 -0
- package/templates/phase-context.md +48 -0
- package/templates/projects/ai-agent.md +55 -0
- package/templates/projects/mobile-app.md +56 -0
- package/templates/projects/voice-agent.md +55 -0
- package/templates/projects/website.md +58 -0
- package/templates/requirements.md +69 -0
- package/templates/research-project/ARCHITECTURE.md +70 -0
- package/templates/research-project/FEATURES.md +60 -0
- package/templates/research-project/PITFALLS.md +73 -0
- package/templates/research-project/STACK.md +51 -0
- package/templates/research-project/SUMMARY.md +86 -0
- package/templates/roadmap.md +71 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Requirements: {Project Name}
|
|
2
|
+
|
|
3
|
+
**Defined:** {date}
|
|
4
|
+
**Core Value:** {from PROJECT.md — the one thing that must work}
|
|
5
|
+
|
|
6
|
+
## v1 Requirements
|
|
7
|
+
|
|
8
|
+
Initial release scope. Each maps to one roadmap phase.
|
|
9
|
+
|
|
10
|
+
### {Category 1}
|
|
11
|
+
|
|
12
|
+
- [ ] **{CAT}-01**: {user-centric, testable, atomic capability}
|
|
13
|
+
- [ ] **{CAT}-02**: {capability}
|
|
14
|
+
- [ ] **{CAT}-03**: {capability}
|
|
15
|
+
|
|
16
|
+
### {Category 2}
|
|
17
|
+
|
|
18
|
+
- [ ] **{CAT}-01**: {capability}
|
|
19
|
+
- [ ] **{CAT}-02**: {capability}
|
|
20
|
+
|
|
21
|
+
## v2 Requirements
|
|
22
|
+
|
|
23
|
+
Acknowledged but deferred to a future release. Not in current roadmap.
|
|
24
|
+
|
|
25
|
+
### {Category}
|
|
26
|
+
|
|
27
|
+
- **{CAT}-01**: {capability}
|
|
28
|
+
- **{CAT}-02**: {capability}
|
|
29
|
+
|
|
30
|
+
## Out of Scope
|
|
31
|
+
|
|
32
|
+
Explicit exclusions with reasoning. Prevents scope creep.
|
|
33
|
+
|
|
34
|
+
| Feature | Reason |
|
|
35
|
+
|---------|--------|
|
|
36
|
+
| {feature} | {why excluded} |
|
|
37
|
+
|
|
38
|
+
## Traceability
|
|
39
|
+
|
|
40
|
+
Which phases cover which requirements. Populated during roadmap creation.
|
|
41
|
+
|
|
42
|
+
| Requirement | Phase | Status |
|
|
43
|
+
|-------------|-------|--------|
|
|
44
|
+
| {CAT}-01 | Phase {N} | Pending |
|
|
45
|
+
|
|
46
|
+
**Coverage:**
|
|
47
|
+
- v1 requirements: {X} total
|
|
48
|
+
- Mapped to phases: {Y}
|
|
49
|
+
- Unmapped: {Z}
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Requirement Quality Rules
|
|
54
|
+
|
|
55
|
+
1. **ID format:** `{CATEGORY}-{NUMBER}` — `AUTH-01`, `CONT-02`, `SOCIAL-03`
|
|
56
|
+
2. **User-centric:** "User can X" — not "System does Y"
|
|
57
|
+
3. **Atomic:** One capability per requirement — not "User can login and manage profile"
|
|
58
|
+
4. **Testable:** "User can reset password via email link" — not "handle password reset"
|
|
59
|
+
5. **Independent:** Minimal dependencies on other requirements
|
|
60
|
+
|
|
61
|
+
## Status Values
|
|
62
|
+
|
|
63
|
+
- **Pending** — not started
|
|
64
|
+
- **In Progress** — phase is active
|
|
65
|
+
- **Complete** — requirement verified
|
|
66
|
+
- **Blocked** — waiting on external factor
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
*Last updated: {date}*
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Architecture Research
|
|
2
|
+
|
|
3
|
+
**Domain:** {domain type}
|
|
4
|
+
**Researched:** {date}
|
|
5
|
+
**Confidence:** {HIGH/MEDIUM/LOW}
|
|
6
|
+
|
|
7
|
+
## Standard Architecture
|
|
8
|
+
|
|
9
|
+
### Component Responsibilities
|
|
10
|
+
|
|
11
|
+
| Component | Responsibility | Typical Implementation |
|
|
12
|
+
|-----------|----------------|------------------------|
|
|
13
|
+
| {name} | {what it owns} | {how it's usually built} |
|
|
14
|
+
|
|
15
|
+
### Data Flow
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[User Action]
|
|
19
|
+
↓
|
|
20
|
+
[Component] → [Handler] → [Service] → [Data Store]
|
|
21
|
+
↓ ↓ ↓ ↓
|
|
22
|
+
[Response] ← [Transform] ← [Query] ← [Database]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Key Flows
|
|
26
|
+
|
|
27
|
+
1. **{flow name}:** {how data moves}
|
|
28
|
+
2. **{flow name}:** {how data moves}
|
|
29
|
+
|
|
30
|
+
## Recommended Project Structure
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
src/
|
|
34
|
+
├── {folder}/ # {purpose}
|
|
35
|
+
├── {folder}/ # {purpose}
|
|
36
|
+
└── {folder}/ # {purpose}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Structure rationale:**
|
|
40
|
+
- **{folder}/:** {why organized this way}
|
|
41
|
+
|
|
42
|
+
## Suggested Build Order
|
|
43
|
+
|
|
44
|
+
Phases should follow this dependency order:
|
|
45
|
+
|
|
46
|
+
1. **{component}** — foundation, no dependencies
|
|
47
|
+
2. **{component}** — depends on 1
|
|
48
|
+
3. **{component}** — depends on 1, 2
|
|
49
|
+
|
|
50
|
+
## Anti-Patterns
|
|
51
|
+
|
|
52
|
+
### {Name}
|
|
53
|
+
|
|
54
|
+
**What people do:** {the mistake}
|
|
55
|
+
**Why it's wrong:** {the problem}
|
|
56
|
+
**Do this instead:** {correct approach}
|
|
57
|
+
|
|
58
|
+
## Integration Points
|
|
59
|
+
|
|
60
|
+
| Service | Integration Pattern | Notes |
|
|
61
|
+
|---------|---------------------|-------|
|
|
62
|
+
| {service} | {how to connect} | {gotchas} |
|
|
63
|
+
|
|
64
|
+
## Sources
|
|
65
|
+
|
|
66
|
+
- {architecture references}
|
|
67
|
+
- {official documentation}
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
*Architecture research for: {domain}*
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Feature Research
|
|
2
|
+
|
|
3
|
+
**Domain:** {domain type}
|
|
4
|
+
**Researched:** {date}
|
|
5
|
+
**Confidence:** {HIGH/MEDIUM/LOW}
|
|
6
|
+
|
|
7
|
+
## Feature Landscape
|
|
8
|
+
|
|
9
|
+
### Table Stakes (Users Expect These)
|
|
10
|
+
|
|
11
|
+
Features users assume exist. Missing these = product feels incomplete.
|
|
12
|
+
|
|
13
|
+
| Feature | Why Expected | Complexity | Notes |
|
|
14
|
+
|---------|--------------|------------|-------|
|
|
15
|
+
| {feature} | {user expectation} | LOW/MEDIUM/HIGH | {implementation notes} |
|
|
16
|
+
|
|
17
|
+
### Differentiators (Competitive Advantage)
|
|
18
|
+
|
|
19
|
+
Features that set the product apart. Not required, but valuable.
|
|
20
|
+
|
|
21
|
+
| Feature | Value Proposition | Complexity | Notes |
|
|
22
|
+
|---------|-------------------|------------|-------|
|
|
23
|
+
| {feature} | {why it matters} | LOW/MEDIUM/HIGH | {notes} |
|
|
24
|
+
|
|
25
|
+
### Anti-Features (Seem Good, Aren't)
|
|
26
|
+
|
|
27
|
+
Features that seem good but create problems — often requested, rarely right.
|
|
28
|
+
|
|
29
|
+
| Feature | Why Requested | Why Problematic | Alternative |
|
|
30
|
+
|---------|---------------|-----------------|-------------|
|
|
31
|
+
| {feature} | {surface appeal} | {actual problems} | {better approach} |
|
|
32
|
+
|
|
33
|
+
## MVP Recommendation
|
|
34
|
+
|
|
35
|
+
### Launch With (v1)
|
|
36
|
+
|
|
37
|
+
- {feature} — {why essential}
|
|
38
|
+
- {feature} — {why essential}
|
|
39
|
+
|
|
40
|
+
### Add After Validation (v1.x)
|
|
41
|
+
|
|
42
|
+
- {feature} — {trigger}
|
|
43
|
+
|
|
44
|
+
### Defer (v2+)
|
|
45
|
+
|
|
46
|
+
- {feature} — {why defer}
|
|
47
|
+
|
|
48
|
+
## Feature Dependencies
|
|
49
|
+
|
|
50
|
+
- **{Feature A}** requires **{Feature B}** — {why}
|
|
51
|
+
- **{Feature C}** enhances **{Feature A}** — {how}
|
|
52
|
+
|
|
53
|
+
## Sources
|
|
54
|
+
|
|
55
|
+
- {competitor products analyzed}
|
|
56
|
+
- {user research referenced}
|
|
57
|
+
- {industry standards}
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
*Feature research for: {domain}*
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Pitfalls Research
|
|
2
|
+
|
|
3
|
+
**Domain:** {domain type}
|
|
4
|
+
**Researched:** {date}
|
|
5
|
+
**Confidence:** {HIGH/MEDIUM/LOW}
|
|
6
|
+
|
|
7
|
+
## Critical Pitfalls
|
|
8
|
+
|
|
9
|
+
### {Pitfall Name}
|
|
10
|
+
|
|
11
|
+
**What goes wrong:** {the failure mode}
|
|
12
|
+
**Why it happens:** {root cause}
|
|
13
|
+
**How to avoid:** {specific prevention strategy}
|
|
14
|
+
**Warning signs:** {how to detect early}
|
|
15
|
+
**Phase to address:** Phase {N}
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
### {Pitfall Name}
|
|
20
|
+
|
|
21
|
+
**What goes wrong:** {failure mode}
|
|
22
|
+
**Why it happens:** {root cause}
|
|
23
|
+
**How to avoid:** {prevention}
|
|
24
|
+
**Warning signs:** {detection}
|
|
25
|
+
**Phase to address:** Phase {N}
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Technical Debt Patterns
|
|
30
|
+
|
|
31
|
+
Shortcuts that seem reasonable but create long-term problems.
|
|
32
|
+
|
|
33
|
+
| Shortcut | Immediate Benefit | Long-term Cost | When Acceptable |
|
|
34
|
+
|----------|-------------------|----------------|-----------------|
|
|
35
|
+
| {shortcut} | {benefit} | {cost} | {conditions, or "never"} |
|
|
36
|
+
|
|
37
|
+
## Performance Traps
|
|
38
|
+
|
|
39
|
+
Patterns that work at small scale but fail as usage grows.
|
|
40
|
+
|
|
41
|
+
| Trap | Symptoms | Prevention | When It Breaks |
|
|
42
|
+
|------|----------|------------|----------------|
|
|
43
|
+
| {trap} | {how you notice} | {how to avoid} | {scale threshold} |
|
|
44
|
+
|
|
45
|
+
## Security Mistakes
|
|
46
|
+
|
|
47
|
+
Domain-specific security issues beyond general web security.
|
|
48
|
+
|
|
49
|
+
| Mistake | Risk | Prevention |
|
|
50
|
+
|---------|------|------------|
|
|
51
|
+
| {mistake} | {what could happen} | {how to avoid} |
|
|
52
|
+
|
|
53
|
+
## "Looks Done But Isn't" Checklist
|
|
54
|
+
|
|
55
|
+
Things that appear complete but are missing critical pieces.
|
|
56
|
+
|
|
57
|
+
- [ ] **{Feature}:** Often missing {thing} — verify {check}
|
|
58
|
+
- [ ] **{Feature}:** Often missing {thing} — verify {check}
|
|
59
|
+
|
|
60
|
+
## Pitfall-to-Phase Mapping
|
|
61
|
+
|
|
62
|
+
| Pitfall | Prevention Phase | Verification |
|
|
63
|
+
|---------|------------------|--------------|
|
|
64
|
+
| {pitfall} | Phase {X} | {how to verify prevention} |
|
|
65
|
+
|
|
66
|
+
## Sources
|
|
67
|
+
|
|
68
|
+
- {post-mortems referenced}
|
|
69
|
+
- {community discussions}
|
|
70
|
+
- {official "gotchas" documentation}
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
*Pitfalls research for: {domain}*
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Stack Research
|
|
2
|
+
|
|
3
|
+
**Domain:** {domain type}
|
|
4
|
+
**Researched:** {date}
|
|
5
|
+
**Confidence:** {HIGH/MEDIUM/LOW}
|
|
6
|
+
|
|
7
|
+
## Recommended Stack
|
|
8
|
+
|
|
9
|
+
### Core Technologies
|
|
10
|
+
|
|
11
|
+
| Technology | Version | Purpose | Why Recommended |
|
|
12
|
+
|------------|---------|---------|-----------------|
|
|
13
|
+
| {name} | {version} | {what it does} | {why experts use it for this domain} |
|
|
14
|
+
| {name} | {version} | {what it does} | {why} |
|
|
15
|
+
|
|
16
|
+
### Supporting Libraries
|
|
17
|
+
|
|
18
|
+
| Library | Version | Purpose | When to Use |
|
|
19
|
+
|---------|---------|---------|-------------|
|
|
20
|
+
| {name} | {version} | {what it does} | {specific use case} |
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install {core packages}
|
|
26
|
+
npm install -D {dev dependencies}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Alternatives Considered
|
|
30
|
+
|
|
31
|
+
| Recommended | Alternative | When to Use Alternative |
|
|
32
|
+
|-------------|-------------|-------------------------|
|
|
33
|
+
| {our choice} | {other option} | {conditions} |
|
|
34
|
+
|
|
35
|
+
## What NOT to Use
|
|
36
|
+
|
|
37
|
+
| Avoid | Why | Use Instead |
|
|
38
|
+
|-------|-----|-------------|
|
|
39
|
+
| {technology} | {specific problem} | {recommended alternative} |
|
|
40
|
+
|
|
41
|
+
## Version Compatibility
|
|
42
|
+
|
|
43
|
+
Known compatibility constraints between the recommended packages.
|
|
44
|
+
|
|
45
|
+
## Sources
|
|
46
|
+
|
|
47
|
+
- {Context7 library ID} — {topics fetched}
|
|
48
|
+
- {Official docs URL} — {what was verified}
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
*Stack research for: {domain}*
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Research Summary
|
|
2
|
+
|
|
3
|
+
**Project:** {name}
|
|
4
|
+
**Domain:** {inferred domain type}
|
|
5
|
+
**Researched:** {date}
|
|
6
|
+
**Confidence:** {HIGH/MEDIUM/LOW}
|
|
7
|
+
|
|
8
|
+
## Executive Summary
|
|
9
|
+
|
|
10
|
+
{2-3 paragraph overview — what type of product this is, recommended approach, key risks}
|
|
11
|
+
|
|
12
|
+
## Key Findings
|
|
13
|
+
|
|
14
|
+
### Recommended Stack
|
|
15
|
+
|
|
16
|
+
**Core:**
|
|
17
|
+
- {tech}: {purpose} — {why}
|
|
18
|
+
- {tech}: {purpose} — {why}
|
|
19
|
+
|
|
20
|
+
### Table Stakes Features
|
|
21
|
+
|
|
22
|
+
- {feature} — users expect this
|
|
23
|
+
- {feature} — users expect this
|
|
24
|
+
|
|
25
|
+
### Differentiators
|
|
26
|
+
|
|
27
|
+
- {feature}
|
|
28
|
+
- {feature}
|
|
29
|
+
|
|
30
|
+
### Critical Pitfalls
|
|
31
|
+
|
|
32
|
+
1. **{pitfall}** — {how to avoid}
|
|
33
|
+
2. **{pitfall}** — {how to avoid}
|
|
34
|
+
3. **{pitfall}** — {how to avoid}
|
|
35
|
+
|
|
36
|
+
## Implications for Roadmap
|
|
37
|
+
|
|
38
|
+
Based on research, suggested phase structure:
|
|
39
|
+
|
|
40
|
+
### Phase 1: {Name}
|
|
41
|
+
**Rationale:** {why this comes first}
|
|
42
|
+
**Delivers:** {what this phase produces}
|
|
43
|
+
**Addresses:** {features from FEATURES.md}
|
|
44
|
+
**Avoids:** {pitfall from PITFALLS.md}
|
|
45
|
+
|
|
46
|
+
### Phase 2: {Name}
|
|
47
|
+
**Rationale:** {why this order}
|
|
48
|
+
**Delivers:** {what this phase produces}
|
|
49
|
+
|
|
50
|
+
### Phase Ordering Rationale
|
|
51
|
+
|
|
52
|
+
- {why this order based on dependencies}
|
|
53
|
+
- {why this grouping based on architecture patterns}
|
|
54
|
+
|
|
55
|
+
### Research Flags
|
|
56
|
+
|
|
57
|
+
Phases likely needing deeper research during `/qualia-plan`:
|
|
58
|
+
- **Phase {X}:** {reason}
|
|
59
|
+
|
|
60
|
+
## Confidence Assessment
|
|
61
|
+
|
|
62
|
+
| Area | Confidence | Notes |
|
|
63
|
+
|------|------------|-------|
|
|
64
|
+
| Stack | {HIGH/MEDIUM/LOW} | {reason} |
|
|
65
|
+
| Features | {HIGH/MEDIUM/LOW} | {reason} |
|
|
66
|
+
| Architecture | {HIGH/MEDIUM/LOW} | {reason} |
|
|
67
|
+
| Pitfalls | {HIGH/MEDIUM/LOW} | {reason} |
|
|
68
|
+
|
|
69
|
+
**Overall confidence:** {HIGH/MEDIUM/LOW}
|
|
70
|
+
|
|
71
|
+
### Gaps to Address
|
|
72
|
+
|
|
73
|
+
{Areas where research was inconclusive — handle during planning}
|
|
74
|
+
|
|
75
|
+
- {gap}: {handling}
|
|
76
|
+
|
|
77
|
+
## Sources
|
|
78
|
+
|
|
79
|
+
**Primary (HIGH confidence):**
|
|
80
|
+
- {Context7 library ID} — {topics}
|
|
81
|
+
|
|
82
|
+
**Secondary (MEDIUM confidence):**
|
|
83
|
+
- {source} — {finding}
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
*Ready for roadmap: yes*
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Roadmap: {Project Name}
|
|
2
|
+
|
|
3
|
+
**Created:** {date}
|
|
4
|
+
**Total phases:** {N}
|
|
5
|
+
**v1 requirements:** {X} covered
|
|
6
|
+
|
|
7
|
+
## Phases
|
|
8
|
+
|
|
9
|
+
| # | Phase | Goal | Requirements | Status |
|
|
10
|
+
|---|-------|------|--------------|--------|
|
|
11
|
+
| 1 | {name} | {one-sentence goal} | {REQ-IDs} | ready |
|
|
12
|
+
| 2 | {name} | {goal} | {REQ-IDs} | — |
|
|
13
|
+
| 3 | {name} | {goal} | {REQ-IDs} | — |
|
|
14
|
+
|
|
15
|
+
## Phase Details
|
|
16
|
+
|
|
17
|
+
### Phase 1: {Name}
|
|
18
|
+
|
|
19
|
+
**Goal:** {what must be TRUE when this phase is done}
|
|
20
|
+
|
|
21
|
+
**Requirements covered:**
|
|
22
|
+
- {REQ-ID}: {description}
|
|
23
|
+
- {REQ-ID}: {description}
|
|
24
|
+
|
|
25
|
+
**Success criteria** (observable user behaviors):
|
|
26
|
+
1. {user can do X}
|
|
27
|
+
2. {user can do Y}
|
|
28
|
+
3. {user can do Z}
|
|
29
|
+
|
|
30
|
+
**Depends on:** none (or: Phase {N})
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
### Phase 2: {Name}
|
|
35
|
+
|
|
36
|
+
**Goal:** {goal}
|
|
37
|
+
|
|
38
|
+
**Requirements covered:**
|
|
39
|
+
- {REQ-ID}: {description}
|
|
40
|
+
|
|
41
|
+
**Success criteria:**
|
|
42
|
+
1. {criterion}
|
|
43
|
+
2. {criterion}
|
|
44
|
+
|
|
45
|
+
**Depends on:** Phase 1
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
{... continue for all phases ...}
|
|
50
|
+
|
|
51
|
+
## Coverage Verification
|
|
52
|
+
|
|
53
|
+
All v1 requirements must map to exactly one phase. Unmapped requirements = roadmap gap.
|
|
54
|
+
|
|
55
|
+
| Requirement | Phase | Covered? |
|
|
56
|
+
|-------------|-------|----------|
|
|
57
|
+
| {REQ-ID} | Phase {N} | ✓ |
|
|
58
|
+
|
|
59
|
+
**Coverage:** {X}/{Y} v1 requirements mapped ({100% expected})
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Rules
|
|
64
|
+
|
|
65
|
+
1. **Feature phases only.** No "review" / "deploy" / "handoff" phases — those are driven by `/qualia-polish` → `/qualia-ship` → `/qualia-handoff` after all feature phases verify.
|
|
66
|
+
2. **Each requirement maps to exactly one phase.** If a requirement spans phases, it's too big — split it.
|
|
67
|
+
3. **Phases are independently verifiable.** A phase completes when its success criteria are observable in a running app.
|
|
68
|
+
4. **Order by dependency, not priority.** Phase 2 should depend on Phase 1's outputs.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
*Last updated: {date}*
|