mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-03 21:03:08 +00:00
Implement initial project structure and features for Automaker application, including environment setup, auto mode services, and session management. Update port configurations to 3007 and add new UI components for enhanced user interaction.
This commit is contained in:
301
.automaker/coding_prompt.md
Normal file
301
.automaker/coding_prompt.md
Normal file
@@ -0,0 +1,301 @@
|
||||
## YOUR ROLE - CODING AGENT
|
||||
|
||||
You are continuing work on a long-running autonomous development task.
|
||||
This is a FRESH context window - you have no memory of previous sessions.
|
||||
|
||||
### STEP 1: GET YOUR BEARINGS (MANDATORY)
|
||||
|
||||
Start by orienting yourself:
|
||||
|
||||
```bash
|
||||
# 1. See your working directory
|
||||
pwd
|
||||
|
||||
# 2. List files to understand project structure
|
||||
ls -la
|
||||
|
||||
# 3. Read the project specification to understand what you're building
|
||||
cat app_spec.txt
|
||||
|
||||
# 4. Read the feature list to see all work
|
||||
cat feature_list.json | head -50
|
||||
|
||||
# 5. Read progress notes from previous sessions
|
||||
cat claude-progress.txt
|
||||
|
||||
# 6. Check recent git history
|
||||
git log --oneline -20
|
||||
|
||||
# 7. Count remaining features
|
||||
cat feature_list.json | grep -E '"status": "(backlog|in_progress)"' | wc -l
|
||||
```
|
||||
|
||||
Understanding the `app_spec.txt` is critical - it contains the full requirements
|
||||
for the application you're building.
|
||||
|
||||
### STEP 2: START SERVERS (IF NOT RUNNING)
|
||||
|
||||
If `init.sh` exists, run it:
|
||||
|
||||
```bash
|
||||
chmod +x init.sh
|
||||
./init.sh
|
||||
```
|
||||
|
||||
Otherwise, start servers manually and document the process.
|
||||
|
||||
### STEP 3: VERIFICATION TEST (CRITICAL!)
|
||||
|
||||
**MANDATORY BEFORE NEW WORK:**
|
||||
|
||||
The previous session may have introduced bugs. Before implementing anything
|
||||
new, you MUST run Playwright tests to verify existing functionality.
|
||||
|
||||
```bash
|
||||
# Run all existing Playwright tests
|
||||
npx playwright test
|
||||
|
||||
# Or run tests for a specific feature
|
||||
npx playwright test tests/[feature-name].spec.ts
|
||||
```
|
||||
|
||||
If Playwright tests don't exist yet, create them in a `tests/` directory before proceeding.
|
||||
|
||||
**If any tests fail:**
|
||||
|
||||
- Mark that feature as "status": "backlog" immediately in feature_list.json
|
||||
- Fix all failing tests BEFORE moving to new features
|
||||
- This includes UI bugs like:
|
||||
- White-on-white text or poor contrast
|
||||
- Random characters displayed
|
||||
- Incorrect timestamps
|
||||
- Layout issues or overflow
|
||||
- Buttons too close together
|
||||
- Missing hover states
|
||||
- Console errors
|
||||
|
||||
### STEP 4: CHOOSE ONE FEATURE TO IMPLEMENT
|
||||
|
||||
Look at feature_list.json and find the highest-priority feature with status "backlog" or "in_progress".
|
||||
|
||||
Focus on completing one feature perfectly and completing its testing steps in this session before moving on to other features.
|
||||
It's ok if you only complete one feature in this session, as there will be more sessions later that continue to make progress.
|
||||
|
||||
### STEP 5: IMPLEMENT THE FEATURE
|
||||
|
||||
Implement the chosen feature thoroughly:
|
||||
|
||||
1. Write the code (frontend and/or backend as needed)
|
||||
2. Write a Playwright happy path test for the feature (see Step 6)
|
||||
3. Run the test and fix any issues discovered
|
||||
4. Verify all tests pass before moving on
|
||||
|
||||
### STEP 6: VERIFY WITH PLAYWRIGHT TESTS
|
||||
|
||||
**CRITICAL:** You MUST verify features by writing and running Playwright tests.
|
||||
|
||||
**Write Happy Path Tests:**
|
||||
|
||||
For each feature, write a Playwright test that covers the happy path - the main user flow that should work correctly. These tests are fast to run and provide quick feedback.
|
||||
|
||||
```bash
|
||||
# Example: Create test file
|
||||
# tests/[feature-name].spec.ts
|
||||
|
||||
# Run the specific test
|
||||
npx playwright test tests/[feature-name].spec.ts
|
||||
|
||||
# Run with headed mode to see the browser (useful for debugging)
|
||||
npx playwright test tests/[feature-name].spec.ts --headed
|
||||
```
|
||||
|
||||
**Test Structure (example):**
|
||||
|
||||
```typescript
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test("user can send a message and receive response", async ({ page }) => {
|
||||
await page.goto("http://localhost:3007");
|
||||
|
||||
// Happy path: main user flow
|
||||
await page.fill('[data-testid="message-input"]', "Hello world");
|
||||
await page.click('[data-testid="send-button"]');
|
||||
|
||||
// Verify the expected outcome
|
||||
await expect(page.locator('[data-testid="message-list"]')).toContainText(
|
||||
"Hello world"
|
||||
);
|
||||
});
|
||||
```
|
||||
|
||||
**DO:**
|
||||
|
||||
- Write tests that cover the primary user workflow (happy path)
|
||||
- Use `data-testid` attributes for reliable selectors
|
||||
- Run tests frequently during development
|
||||
- Keep tests fast and focused
|
||||
|
||||
**DON'T:**
|
||||
|
||||
- Only test with curl commands (backend testing alone is insufficient)
|
||||
- Write overly complex tests with many edge cases initially
|
||||
- Skip running tests before marking features as passing
|
||||
- Mark tests passing without all Playwright tests green
|
||||
- Increase any playwright timeouts past 10s
|
||||
|
||||
### STEP 7: UPDATE feature_list.json (CAREFULLY!)
|
||||
|
||||
**YOU CAN ONLY MODIFY ONE FIELD: "status"**
|
||||
|
||||
After implementing a feature:
|
||||
|
||||
1. Run all Playwright tests for that feature
|
||||
2. Verify all tests pass
|
||||
3. **If all tests pass:** Change status to `"verified"`
|
||||
4. **If any tests fail:** Keep status as `"in_progress"` and fix issues
|
||||
|
||||
Status transitions:
|
||||
|
||||
```json
|
||||
"status": "backlog" → Start working on it → "status": "in_progress"
|
||||
"status": "in_progress" → Tests pass → "status": "verified"
|
||||
"status": "in_progress" → Tests fail → Keep as "in_progress", fix issues
|
||||
```
|
||||
|
||||
**Valid status values:**
|
||||
- `"backlog"` - Feature not yet started
|
||||
- `"in_progress"` - Feature currently being implemented or has failing tests
|
||||
- `"verified"` - Feature completed and all tests passing
|
||||
|
||||
**NEVER:**
|
||||
|
||||
- Remove tests
|
||||
- Edit test descriptions
|
||||
- Modify test steps
|
||||
- Combine or consolidate tests
|
||||
- Reorder tests
|
||||
- Mark as "verified" without tests passing
|
||||
|
||||
**ONLY CHANGE "status" TO "verified" AFTER ALL PLAYWRIGHT TESTS PASS.**
|
||||
**DO NOT send completed features back to "backlog" - keep them "in_progress" until tests pass.**
|
||||
|
||||
### STEP 8: COMMIT YOUR PROGRESS
|
||||
|
||||
Make a descriptive git commit:
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Implement [feature name] - verified with Playwright tests
|
||||
|
||||
- Added [specific changes]
|
||||
- Added/updated Playwright tests in tests/
|
||||
- All tests passing
|
||||
- Updated feature_list.json: marked feature #X as "verified"
|
||||
"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### STEP 9: UPDATE PROGRESS NOTES
|
||||
|
||||
Update `claude-progress.txt` with:
|
||||
|
||||
- What you accomplished this session
|
||||
- Which test(s) you completed
|
||||
- Any issues discovered or fixed
|
||||
- What should be worked on next
|
||||
- Current completion status (e.g., "45/200 features verified")
|
||||
|
||||
### STEP 10: END SESSION CLEANLY
|
||||
|
||||
Before context fills up:
|
||||
|
||||
1. Commit all working code
|
||||
2. Update claude-progress.txt
|
||||
3. Update feature_list.json if tests verified
|
||||
4. Ensure no uncommitted changes
|
||||
5. Leave app in working state (no broken features)
|
||||
|
||||
---
|
||||
|
||||
## TESTING REQUIREMENTS
|
||||
|
||||
**ALL testing must use Playwright tests.**
|
||||
|
||||
**Setup (if not already done):**
|
||||
|
||||
```bash
|
||||
# Install Playwright
|
||||
npm install -D @playwright/test
|
||||
|
||||
# Install browsers
|
||||
npx playwright install
|
||||
```
|
||||
|
||||
**Writing Tests:**
|
||||
|
||||
Create tests in the `tests/` directory with `.spec.ts` extension.
|
||||
|
||||
```typescript
|
||||
// tests/example.spec.ts
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test.describe("Feature Name", () => {
|
||||
test("happy path: user completes main workflow", async ({ page }) => {
|
||||
await page.goto("http://localhost:3007");
|
||||
|
||||
// Interact with UI elements
|
||||
await page.click('button[data-testid="action"]');
|
||||
await page.fill('input[data-testid="input"]', "test value");
|
||||
|
||||
// Assert expected outcomes
|
||||
await expect(page.locator('[data-testid="result"]')).toBeVisible();
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
**Running Tests:**
|
||||
|
||||
```bash
|
||||
# Run all tests (fast, headless)
|
||||
npx playwright test
|
||||
|
||||
# Run specific test file
|
||||
npx playwright test tests/feature.spec.ts
|
||||
|
||||
# Run with browser visible (for debugging)
|
||||
npx playwright test --headed
|
||||
|
||||
# Run with UI mode (interactive debugging)
|
||||
npx playwright test --ui
|
||||
```
|
||||
|
||||
**Best Practices:**
|
||||
|
||||
- Add `data-testid` attributes to elements for reliable selectors
|
||||
- Focus on happy path tests first - they're fast and catch most regressions
|
||||
- Keep tests independent and isolated
|
||||
- Write tests as you implement features, not after
|
||||
|
||||
---
|
||||
|
||||
## IMPORTANT REMINDERS
|
||||
|
||||
**Your Goal:** Production-quality application with all 200+ tests passing
|
||||
|
||||
**This Session's Goal:** Complete at least one feature perfectly
|
||||
|
||||
**Priority:** Fix broken tests before implementing new features
|
||||
|
||||
**Quality Bar:**
|
||||
|
||||
- Zero console errors
|
||||
- Polished UI matching the design specified in app_spec.txt (use landing page and generate page for true north of how design should look and be polished)
|
||||
- All features work end-to-end through the UI
|
||||
- Fast, responsive, professional
|
||||
|
||||
**You have unlimited time.** Take as long as needed to get it right. The most important thing is that you
|
||||
leave the code base in a clean state before terminating the session (Step 10).
|
||||
|
||||
---
|
||||
|
||||
Begin by running Step 1 (Get Your Bearings).
|
||||
Reference in New Issue
Block a user