Skip to content

Commit f4fc5aa

Browse files
authored
feat(api): secure proxy download route for S3 files (#3171)
1 parent 466d4f1 commit f4fc5aa

46 files changed

Lines changed: 3544 additions & 472 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/rules/automation.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ Before reporting ANY task as done, launch **4 parallel agents**:
6565

6666
If any fails → fix → re-run. Only report completion when all 4 pass.
6767

68+
### Before every push — format & lint check
69+
70+
Before pushing code (`git push`), **always** run `pnpm check:write` (or `pnpm lint:check && pnpm format:check` to verify). The auto-lint hook catches most issues after individual edits, but does not guarantee the final state is clean. A final check before push prevents CI failures.
71+
6872
**Bonus: Next.js runtime check** — if the dev server is running, also call `nextjs_call(get_errors)` via the `next-devtools` MCP to catch runtime/compilation errors not visible in `pnpm typecheck`.
6973

7074
> **Junior-proof policy:** Agents are always in the pipeline — a junior cannot "forget" to run them. The agent itself decides if there is work to do based on the modified files. Zero overhead when not relevant, zero chance of skipping when relevant.

.claude/skills/analyse/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,4 @@ Present a structured plan:
7171

7272
# Step 4 — Validate
7373

74-
Ask the user to validate, adjust, or ask questions about the plan. Once approved, the user runs `/implement` to execute it.
74+
Ask the user to validate, adjust, or ask questions about the plan. Once approved, run `/implement` next to execute it.

.claude/skills/implement/SKILL.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ description: "Implement a GitHub issue: fetch, branch, code, validate. Usage: /i
55

66
# /implement
77

8-
Implements a GitHub issue end-to-end: understand the issue, code it, validate it.
8+
Implements a GitHub issue end-to-end: code it and validate it.
9+
10+
> **Prerequisite**: Run `/analyse` first to generate a plan. This skill executes the plan, it does not re-analyze the issue.
911
1012
## Arguments
1113

@@ -67,4 +69,4 @@ Run the quality gates and fix loop as defined in `.claude/rules/automation.md`.
6769

6870
If the dev server is running, also run `pnpm test:lighthouse` (must score 100% accessibility).
6971

70-
Done. Code is validated and ready to ship via `/ship`.
72+
Done. Code is validated and ready to ship — run `/ship` next.

.claude/skills/ship/SKILL.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Analyze commits on the branch. Decide whether to **split** into multiple PRs bas
3333
- Unrelated concerns mixed together (e.g. refactor + feature + bugfix)
3434
- Large diff that would be hard to review as a single PR
3535

36-
If the commits form a single cohesive change, create one PR. If not, split.
36+
If the commits form a single cohesive change, create one PR. If splitting seems appropriate, **always ask for user confirmation before proceeding** — never split without explicit approval.
3737

3838
---
3939

@@ -44,16 +44,10 @@ If the commits form a single cohesive change, create one PR. If not, split.
4444
Push and create PR targeting `alpha` (`--base alpha`). Use this body template:
4545

4646
```
47+
fix #{N}
48+
4749
## Summary
4850
<1-3 bullet points from the issue/commits>
49-
50-
Closes #{N}
51-
52-
## Quality gates
53-
- [x] Typecheck / Tests / Lint
54-
- [x] Structural / RGAA / Security audit
55-
56-
Generated with [Claude Code](https://claude.com/claude-code)
5751
```
5852

5953
### Split PRs

.github/workflows/e2e.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ jobs:
2121
EGAPRO_PROCONNECT_ISSUER: ${{ secrets.EGAPRO_PROCONNECT_ISSUER }}
2222
EGAPRO_WEEZ_API_URL: ${{ secrets.EGAPRO_WEEZ_API_URL }}
2323
EGAPRO_SUIT_API_URL: ${{ secrets.EGAPRO_SUIT_API_URL }}
24-
EGAPRO_SUIT_API_KEY: ${{ secrets.EGAPRO_SUIT_API_KEY }}
24+
# Deterministic dev value matching the E2E test's hardcoded key.
25+
# The real secret is only needed in deployed environments.
26+
EGAPRO_SUIT_API_KEY: dev-suit-api-key-minimum-32-chars-long
2527
S3_ENDPOINT: http://localhost:9000
2628
S3_REGION: us-east-1
2729
S3_ACCESS_KEY_ID: minioadmin

0 commit comments

Comments
 (0)