productkit 1.0.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/README.md ADDED
@@ -0,0 +1,107 @@
1
+ # Product Kit
2
+
3
+ Slash-command-driven product thinking toolkit for [Claude Code](https://claude.com/claude-code).
4
+
5
+ Product Kit gives PMs a structured workflow for validating product ideas — user personas, problem statements, assumptions mapping — all through guided AI conversations.
6
+
7
+ ## Prerequisites
8
+
9
+ - **Node.js** 18 or later
10
+ - **[Claude Code](https://claude.com/claude-code)** installed and available in your PATH
11
+
12
+ Verify Claude Code is ready:
13
+
14
+ ```bash
15
+ claude --version
16
+ ```
17
+
18
+ ## Setup
19
+
20
+ ### From npm (once published)
21
+
22
+ ```bash
23
+ npm install -g productkit
24
+ ```
25
+
26
+ ### From source
27
+
28
+ ```bash
29
+ git clone https://github.com/douno/product-kit.git
30
+ cd product-kit
31
+ npm install
32
+ npm link # makes `productkit` available globally
33
+ ```
34
+
35
+ ## Usage
36
+
37
+ ### 1. Create a project
38
+
39
+ ```bash
40
+ productkit init my-project
41
+ cd my-project
42
+ ```
43
+
44
+ This scaffolds a project with slash commands, a `CLAUDE.md` context file, and a `.productkit/` config directory.
45
+
46
+ ### 2. Open Claude Code
47
+
48
+ ```bash
49
+ claude
50
+ ```
51
+
52
+ ### 3. Run the slash commands in order
53
+
54
+ Each command starts a guided conversation. Claude asks questions, pushes back on vague answers, and writes a markdown artifact when done.
55
+
56
+ | Step | Command | What it does | Output |
57
+ |------|---------|-------------|--------|
58
+ | 1 | `/productkit.constitution` | Define product principles and values | `constitution.md` |
59
+ | 2 | `/productkit.users` | Define target user personas through dialogue | `users.md` |
60
+ | 3 | `/productkit.problem` | Frame the problem statement grounded in user research | `problem.md` |
61
+ | 4 | `/productkit.assumptions` | Extract and prioritize hidden assumptions | `assumptions.md` |
62
+ | 5 | `/productkit.clarify` | Resolve ambiguities and contradictions across artifacts | Updates existing files |
63
+ | 6 | `/productkit.analyze` | Run a consistency and completeness check | Analysis in chat |
64
+
65
+ Commands build on each other — `/productkit.problem` reads your `users.md` to ground the problem in real user needs. `/productkit.assumptions` reads both `users.md` and `problem.md` to find hidden assumptions. You can run `/productkit.clarify` and `/productkit.analyze` at any stage to check your work.
66
+
67
+ ### 4. Review your artifacts
68
+
69
+ After running the commands, your project root contains:
70
+
71
+ ```
72
+ my-project/
73
+ ├── constitution.md # Product principles
74
+ ├── users.md # User personas
75
+ ├── problem.md # Problem statement
76
+ ├── assumptions.md # Prioritized assumptions
77
+ ├── .productkit/config.json
78
+ ├── .claude/commands/ # Slash command prompts
79
+ ├── CLAUDE.md
80
+ ├── README.md
81
+ └── .gitignore
82
+ ```
83
+
84
+ These markdown files are your product foundation — share them with your team, commit them to git, or use them as input for solution design.
85
+
86
+ ## CLI Commands
87
+
88
+ | Command | Description |
89
+ |---------|-------------|
90
+ | `productkit init <name>` | Scaffold a new project |
91
+ | `productkit check` | Verify Claude Code is installed |
92
+
93
+ ## How It Works
94
+
95
+ Product Kit is a thin scaffolding tool. The real work happens in slash commands — markdown prompt files that live in `.claude/commands/`. When you type `/productkit.users` in Claude Code, it reads the prompt file and starts a guided conversation.
96
+
97
+ Each prompt tells Claude:
98
+ - What role to play (PM coach, research specialist, etc.)
99
+ - What artifacts to read first (enforces workflow ordering)
100
+ - How to guide the conversation (questions to ask, what to push back on)
101
+ - What file to write and in what format
102
+
103
+ You can customize any slash command by editing the files in `.claude/commands/`.
104
+
105
+ ## License
106
+
107
+ MIT
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "productkit",
3
+ "version": "1.0.0",
4
+ "description": "Slash-command-driven product thinking toolkit for Claude Code",
5
+ "main": "src/cli.js",
6
+ "bin": {
7
+ "productkit": "./src/cli.js"
8
+ },
9
+ "scripts": {
10
+ "test": "node --test test/*.test.js"
11
+ },
12
+ "files": [
13
+ "src/",
14
+ "templates/",
15
+ "README.md"
16
+ ],
17
+ "keywords": [
18
+ "product-management",
19
+ "claude-code",
20
+ "slash-commands",
21
+ "product-thinking"
22
+ ],
23
+ "author": "Douno",
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "chalk": "^4.1.2",
27
+ "commander": "^11.1.0",
28
+ "fs-extra": "^11.2.0"
29
+ }
30
+ }
package/src/cli.js ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { Command } = require('commander');
4
+ const chalk = require('chalk');
5
+ const initCommand = require('./commands/init');
6
+ const checkCommand = require('./commands/check');
7
+
8
+ const program = new Command();
9
+
10
+ program
11
+ .name('productkit')
12
+ .description(chalk.cyan.bold('Product thinking toolkit for Claude Code'))
13
+ .version('1.0.0');
14
+
15
+ program
16
+ .command('init <projectName>')
17
+ .description('Initialize a new product research project')
18
+ .action(initCommand);
19
+
20
+ program
21
+ .command('check')
22
+ .description('Verify Claude Code is installed and available')
23
+ .action(checkCommand);
24
+
25
+ program.parse(process.argv);
26
+
27
+ if (process.argv.length === 2) {
28
+ program.outputHelp();
29
+ }
@@ -0,0 +1,17 @@
1
+ const chalk = require('chalk');
2
+ const { execSync } = require('child_process');
3
+
4
+ async function check() {
5
+ try {
6
+ execSync('claude --version', { stdio: 'ignore' });
7
+ console.log(chalk.green('Claude Code is installed and available.'));
8
+ } catch {
9
+ console.log(chalk.red('Claude Code is not installed or not in PATH.'));
10
+ console.log();
11
+ console.log('Install it:');
12
+ console.log(' npm install -g @anthropic-ai/claude-code');
13
+ process.exit(1);
14
+ }
15
+ }
16
+
17
+ module.exports = check;
@@ -0,0 +1,74 @@
1
+ const fs = require('fs-extra');
2
+ const path = require('path');
3
+ const chalk = require('chalk');
4
+
5
+ async function init(projectName) {
6
+ const projectRoot = path.join(process.cwd(), projectName);
7
+
8
+ if (fs.existsSync(projectRoot)) {
9
+ console.error(chalk.red(`Error: Directory "${projectName}" already exists`));
10
+ process.exit(1);
11
+ }
12
+
13
+ try {
14
+ const templatesDir = path.join(__dirname, '..', '..', 'templates');
15
+
16
+ // Create directories
17
+ fs.ensureDirSync(path.join(projectRoot, '.productkit'));
18
+ fs.ensureDirSync(path.join(projectRoot, '.claude', 'commands'));
19
+
20
+ // Write config
21
+ fs.writeJsonSync(path.join(projectRoot, '.productkit', 'config.json'), {
22
+ version: '1.0.0',
23
+ created: new Date().toISOString(),
24
+ }, { spaces: 2 });
25
+
26
+ // Copy slash command templates
27
+ const commandsDir = path.join(templatesDir, 'commands');
28
+ const commandFiles = fs.readdirSync(commandsDir);
29
+ for (const file of commandFiles) {
30
+ fs.copyFileSync(
31
+ path.join(commandsDir, file),
32
+ path.join(projectRoot, '.claude', 'commands', file)
33
+ );
34
+ }
35
+
36
+ // Copy CLAUDE.md
37
+ fs.copyFileSync(
38
+ path.join(templatesDir, 'CLAUDE.md'),
39
+ path.join(projectRoot, 'CLAUDE.md')
40
+ );
41
+
42
+ // Copy README.md with project name substitution
43
+ let readme = fs.readFileSync(path.join(templatesDir, 'README.md'), 'utf-8');
44
+ readme = readme.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
45
+ fs.writeFileSync(path.join(projectRoot, 'README.md'), readme);
46
+
47
+ // Copy .gitignore
48
+ fs.copyFileSync(
49
+ path.join(templatesDir, 'gitignore'),
50
+ path.join(projectRoot, '.gitignore')
51
+ );
52
+
53
+ // Init git repo
54
+ const { execSync } = require('child_process');
55
+ try {
56
+ execSync('git init', { cwd: projectRoot, stdio: 'ignore' });
57
+ } catch {
58
+ // Git not available, skip
59
+ }
60
+
61
+ console.log(chalk.green.bold('Project initialized successfully!'));
62
+ console.log();
63
+ console.log(chalk.cyan('Next steps:'));
64
+ console.log(` 1. cd ${projectName}`);
65
+ console.log(' 2. claude');
66
+ console.log(' 3. /productkit.constitution');
67
+ console.log();
68
+ } catch (error) {
69
+ console.error(chalk.red('Error initializing project:'), error.message);
70
+ process.exit(1);
71
+ }
72
+ }
73
+
74
+ module.exports = init;
@@ -0,0 +1,18 @@
1
+ const fs = require('fs-extra');
2
+ const path = require('path');
3
+
4
+ function isProductKitProject() {
5
+ return fs.existsSync(path.join(process.cwd(), '.productkit'));
6
+ }
7
+
8
+ function getProjectRoot() {
9
+ if (isProductKitProject()) {
10
+ return process.cwd();
11
+ }
12
+ return null;
13
+ }
14
+
15
+ module.exports = {
16
+ isProductKitProject,
17
+ getProjectRoot,
18
+ };
@@ -0,0 +1,26 @@
1
+ # Product Kit Project
2
+
3
+ This project uses Product Kit for structured product thinking.
4
+
5
+ ## Slash Commands
6
+
7
+ Use these commands in order to build your product foundation:
8
+
9
+ 1. `/productkit.constitution` — Define your product principles
10
+ 2. `/productkit.users` — Define target user personas
11
+ 3. `/productkit.problem` — Frame the problem statement
12
+ 4. `/productkit.assumptions` — Extract and prioritize assumptions
13
+ 5. `/productkit.clarify` — Resolve ambiguities across artifacts
14
+ 6. `/productkit.analyze` — Run a completeness/consistency check
15
+
16
+ ## Artifacts
17
+
18
+ Product artifacts are written to the project root as markdown files:
19
+ - `constitution.md` — Product principles and values
20
+ - `users.md` — Target user personas
21
+ - `problem.md` — Problem statement
22
+ - `assumptions.md` — Prioritized assumptions
23
+
24
+ ## Workflow
25
+
26
+ Start with `/productkit.constitution` or `/productkit.users`, then work through the commands in order. Each command reads previous artifacts to maintain consistency.
@@ -0,0 +1,27 @@
1
+ # {{PROJECT_NAME}}
2
+
3
+ A product research project powered by [Product Kit](https://github.com/douno/product-kit).
4
+
5
+ ## Getting Started
6
+
7
+ ```bash
8
+ claude
9
+ ```
10
+
11
+ Then use the slash commands to build your product foundation:
12
+
13
+ 1. `/productkit.constitution` — Define your product principles
14
+ 2. `/productkit.users` — Define target user personas
15
+ 3. `/productkit.problem` — Frame the problem statement
16
+ 4. `/productkit.assumptions` — Extract and prioritize assumptions
17
+ 5. `/productkit.clarify` — Resolve ambiguities
18
+ 6. `/productkit.analyze` — Check consistency and completeness
19
+
20
+ ## Artifacts
21
+
22
+ | File | Description |
23
+ |------|-------------|
24
+ | `constitution.md` | Product principles and values |
25
+ | `users.md` | Target user personas |
26
+ | `problem.md` | Problem statement |
27
+ | `assumptions.md` | Prioritized assumptions |
@@ -0,0 +1,72 @@
1
+ ---
2
+ description: Run a consistency and completeness check on all product artifacts
3
+ ---
4
+
5
+ You are a product analysis specialist performing a thorough review of the product's research artifacts.
6
+
7
+ ## Your Role
8
+
9
+ Evaluate the overall quality, consistency, and completeness of the product thinking so far. Provide an honest assessment.
10
+
11
+ ## Before You Start
12
+
13
+ Read all existing artifacts in the project root:
14
+ - `constitution.md`
15
+ - `users.md`
16
+ - `problem.md`
17
+ - `assumptions.md`
18
+
19
+ Work with whatever exists.
20
+
21
+ ## Analysis Dimensions
22
+
23
+ ### 1. Completeness
24
+ - Which artifacts exist and which are missing?
25
+ - Within each artifact, are all sections filled in with substance?
26
+ - Are there obvious gaps in thinking?
27
+
28
+ ### 2. Consistency
29
+ - Do all artifacts tell the same story?
30
+ - Are user definitions consistent with the problem statement?
31
+ - Do principles align with the stated users and problems?
32
+
33
+ ### 3. Specificity
34
+ - Are descriptions concrete enough to act on?
35
+ - Could someone new to the project understand the target user?
36
+ - Is the problem statement testable?
37
+
38
+ ### 4. Evidence Quality
39
+ - How much is grounded in observation vs. assumption?
40
+ - Are claims supported with evidence?
41
+ - What's the ratio of facts to opinions?
42
+
43
+ ### 5. Readiness
44
+ - Is this product thinking mature enough to move to solution design?
45
+ - What must be resolved before moving forward?
46
+
47
+ ## Output
48
+
49
+ Present the analysis directly in the conversation. Use this structure:
50
+
51
+ ```
52
+ ## Product Analysis Report
53
+
54
+ ### Score: [X/10]
55
+
56
+ ### Strengths
57
+ - [What's working well]
58
+
59
+ ### Gaps
60
+ - [What's missing or weak]
61
+
62
+ ### Contradictions
63
+ - [Any conflicts between artifacts]
64
+
65
+ ### Recommendations
66
+ 1. [Most important next step]
67
+ 2. [Second priority]
68
+ 3. [Third priority]
69
+
70
+ ### Verdict
71
+ [Ready to move to solution design / Needs more work on X]
72
+ ```
@@ -0,0 +1,67 @@
1
+ ---
2
+ description: Extract and prioritize assumptions from your product artifacts
3
+ ---
4
+
5
+ You are a critical thinking specialist helping surface hidden assumptions in product plans.
6
+
7
+ ## Your Role
8
+
9
+ Systematically extract assumptions from existing artifacts, categorize them by risk, and suggest validation approaches.
10
+
11
+ ## Before You Start
12
+
13
+ Read these files first (required):
14
+ - `users.md` — user definitions
15
+ - `problem.md` — problem statement
16
+
17
+ If either file is missing, tell the user which commands to run first.
18
+
19
+ Also read if they exist:
20
+ - `constitution.md` — product principles
21
+
22
+ ## Process
23
+
24
+ 1. **Extract assumptions** — Read through each artifact and identify every assumption (stated and unstated)
25
+ 2. **Categorize each assumption:**
26
+ - **Desirability** — Will users want this?
27
+ - **Feasibility** — Can we build this?
28
+ - **Viability** — Will this work as a business?
29
+ 3. **Assess risk** — For each assumption, rate:
30
+ - **Confidence:** How sure are we? (high/medium/low)
31
+ - **Impact:** What happens if we're wrong? (high/medium/low)
32
+ 4. **Prioritize** — Highest risk = low confidence + high impact
33
+ 5. **Suggest validation** — For the top 3-5 riskiest assumptions, suggest how to test them
34
+
35
+ ## Conversation Style
36
+
37
+ - Present findings systematically, then discuss
38
+ - Be direct about weak spots — your job is to find holes
39
+ - Distinguish between assumptions and facts
40
+ - Ask clarifying questions if the artifacts are ambiguous
41
+
42
+ ## Output
43
+
44
+ Write to `assumptions.md` in the project root:
45
+
46
+ ```markdown
47
+ # Assumptions
48
+
49
+ ## Critical (Low Confidence, High Impact)
50
+ 1. **[Assumption]**
51
+ - Source: [Which artifact]
52
+ - Risk: [What happens if wrong]
53
+ - Test: [How to validate]
54
+
55
+ ## Important (Medium Risk)
56
+ 1. **[Assumption]**
57
+ - Source: [Which artifact]
58
+ - Test: [How to validate]
59
+
60
+ ## Low Risk (High Confidence or Low Impact)
61
+ 1. **[Assumption]**
62
+
63
+ ## Recommended Next Steps
64
+ 1. [Most important thing to validate first]
65
+ 2. [Second priority]
66
+ 3. [Third priority]
67
+ ```
@@ -0,0 +1,38 @@
1
+ ---
2
+ description: Resolve ambiguities and contradictions across product artifacts
3
+ ---
4
+
5
+ You are a clarity specialist helping resolve ambiguities, contradictions, and gaps across product artifacts.
6
+
7
+ ## Your Role
8
+
9
+ Cross-reference all existing artifacts, find inconsistencies, and guide the user to resolve them.
10
+
11
+ ## Before You Start
12
+
13
+ Read all existing artifacts in the project root:
14
+ - `constitution.md`
15
+ - `users.md`
16
+ - `problem.md`
17
+ - `assumptions.md`
18
+
19
+ Work with whatever exists — this command can run at any stage.
20
+
21
+ ## Process
22
+
23
+ 1. **Cross-reference artifacts** — Do user definitions align with the problem statement? Do principles match the target users?
24
+ 2. **Identify contradictions** — Flag any places where artifacts disagree
25
+ 3. **Find gaps** — What questions remain unanswered?
26
+ 4. **Surface implicit decisions** — What has been decided without being stated?
27
+ 5. **Guide resolution** — For each issue, help the user decide and update the relevant artifact
28
+
29
+ ## Conversation Style
30
+
31
+ - Be specific — quote the conflicting text from each artifact
32
+ - Present one issue at a time
33
+ - Suggest resolution options, don't just flag problems
34
+ - After resolving, offer to update the relevant file
35
+
36
+ ## Output
37
+
38
+ This command updates existing artifacts rather than creating a new file. After resolving issues, update the relevant files (`users.md`, `problem.md`, etc.) with the agreed-upon changes.
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: Establish product principles and values for your project
3
+ ---
4
+
5
+ You are a product management coach helping establish a product constitution — the foundational principles that guide all product decisions.
6
+
7
+ ## Your Role
8
+
9
+ Act as a seasoned PM mentor. Guide the user through defining their product's core values and principles through dialogue.
10
+
11
+ ## Process
12
+
13
+ 1. **Ask about the product vision** — What change do they want to see in the world?
14
+ 2. **Explore values** — What matters most? Speed vs quality? Privacy vs convenience? Ask them to make hard tradeoffs.
15
+ 3. **Identify non-negotiables** — What will this product NEVER do?
16
+ 4. **Define decision-making principles** — When two priorities conflict, which wins?
17
+ 5. **Draft the constitution** — Synthesize into a clear, concise document.
18
+
19
+ ## Conversation Style
20
+
21
+ - Ask one question at a time
22
+ - Push back on vague answers ("everyone" is not a user, "fast" is not a principle)
23
+ - Offer examples from well-known products to ground the conversation
24
+ - After 4-6 exchanges, propose a draft and ask for feedback
25
+
26
+ ## Output
27
+
28
+ Write the final constitution to `constitution.md` in the project root with this format:
29
+
30
+ ```markdown
31
+ # Product Constitution
32
+
33
+ ## Vision
34
+ [One sentence describing the change this product creates]
35
+
36
+ ## Core Principles
37
+ 1. [Principle] — [Why it matters]
38
+ 2. [Principle] — [Why it matters]
39
+ 3. [Principle] — [Why it matters]
40
+
41
+ ## Non-Negotiables
42
+ - [What this product will NEVER do]
43
+
44
+ ## Decision Framework
45
+ When [X] conflicts with [Y], we choose [X] because [reason].
46
+ ```
@@ -0,0 +1,61 @@
1
+ ---
2
+ description: Frame the problem statement based on user research
3
+ ---
4
+
5
+ You are a problem-framing specialist helping articulate a clear, validated problem statement.
6
+
7
+ ## Your Role
8
+
9
+ Guide the user from vague problem intuition to a crisp, testable problem statement. Ground everything in user evidence.
10
+
11
+ ## Before You Start
12
+
13
+ Read these files first (required):
14
+ - `users.md` — understand who has this problem
15
+ - `constitution.md` — if it exists, align with product principles
16
+
17
+ If `users.md` does not exist, tell the user to run `/productkit.users` first.
18
+
19
+ ## Process
20
+
21
+ 1. **Surface the problem** — What problem are they solving? For whom?
22
+ 2. **Ground in evidence** — How do they know this is a real problem? What have users said or done?
23
+ 3. **Quantify impact** — How often does this problem occur? How painful is it?
24
+ 4. **Explore root causes** — Why does this problem exist? What's the underlying cause?
25
+ 5. **Define boundaries** — What is NOT part of this problem? What's out of scope?
26
+ 6. **Articulate the gap** — What's the difference between the current state and desired state?
27
+
28
+ ## Conversation Style
29
+
30
+ - Ask one question at a time
31
+ - Reject solution-framing ("we need an app that..." → "what problem does that app solve?")
32
+ - Push for evidence over opinion ("I think users want..." → "what have users actually said or done?")
33
+ - Flag assumptions explicitly
34
+
35
+ ## Output
36
+
37
+ Write the problem statement to `problem.md` in the project root:
38
+
39
+ ```markdown
40
+ # Problem Statement
41
+
42
+ ## The Problem
43
+ [2-3 sentence problem statement grounded in user reality]
44
+
45
+ ## Who Has This Problem
46
+ [Reference to specific user types from users.md]
47
+
48
+ ## Evidence
49
+ - [What you've observed or heard from users]
50
+
51
+ ## Impact
52
+ - **Frequency:** [How often this problem occurs]
53
+ - **Severity:** [How painful it is when it occurs]
54
+
55
+ ## Root Cause
56
+ [Why this problem exists]
57
+
58
+ ## Scope
59
+ - **In scope:** [What we're solving]
60
+ - **Out of scope:** [What we're explicitly NOT solving]
61
+ ```
@@ -0,0 +1,53 @@
1
+ ---
2
+ description: Define target user personas through guided dialogue
3
+ ---
4
+
5
+ You are a user research specialist helping define target user personas for this product.
6
+
7
+ ## Your Role
8
+
9
+ Guide the user through identifying and deeply understanding their target users. Push for specificity — reject generic descriptions.
10
+
11
+ ## Before You Start
12
+
13
+ Read `constitution.md` if it exists — use the product vision to inform user discovery.
14
+
15
+ ## Process
16
+
17
+ 1. **Identify user types** — Who are the distinct groups that will use this product? (aim for 2-4)
18
+ 2. **For each user type, explore:**
19
+ - What is their current situation? (job, context, environment)
20
+ - What are they trying to accomplish? (goals, desired outcomes)
21
+ - What frustrates them today? (pain points, workarounds)
22
+ - How do they currently solve this problem? (existing solutions)
23
+ - What would make them switch to something new? (switching triggers)
24
+ 3. **Prioritize** — Which user type is the primary target for v1?
25
+ 4. **Validate** — Are these real people they've talked to, or assumptions?
26
+
27
+ ## Conversation Style
28
+
29
+ - Ask one question at a time
30
+ - Challenge vague descriptions ("busy professionals" → "mid-level marketing managers at B2B SaaS companies with 50-200 employees")
31
+ - Flag when users describe themselves instead of their actual users
32
+ - After defining each persona, summarize and confirm before moving on
33
+
34
+ ## Output
35
+
36
+ Write the final personas to `users.md` in the project root with this format:
37
+
38
+ ```markdown
39
+ # Target Users
40
+
41
+ ## Primary: [User Type Name]
42
+ - **Who:** [Specific description]
43
+ - **Context:** [Their situation and environment]
44
+ - **Goals:** [What they're trying to achieve]
45
+ - **Pain Points:** [Current frustrations]
46
+ - **Current Solutions:** [How they solve this today]
47
+
48
+ ## Secondary: [User Type Name]
49
+ [Same structure]
50
+
51
+ ## Key Insight
52
+ [The most important thing learned about these users]
53
+ ```
@@ -0,0 +1,3 @@
1
+ node_modules/
2
+ .DS_Store
3
+ .env