@next-friday/create-app 5.0.0 → 5.0.2
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/package.json +10 -10
- package/templates/base/.agents/skills/write-intent/SKILL.md +1 -1
- package/templates/base/.claude/skills/write-intent/SKILL.md +1 -1
- package/templates/base/.cursor/skills/write-intent/SKILL.md +1 -1
- package/templates/base/.husky/pre-push +8 -1
- package/templates/base/SETUP.md +3 -1
- package/templates/base/intent/README.md +1 -1
- package/templates/nestjs/package.json +4 -4
- package/templates/nextjs/package.json +4 -4
- package/templates/nodejs/package.json +4 -4
- package/templates/payload/package.json +4 -4
- package/templates/turborepo/apps/app/package.json +2 -2
- package/templates/turborepo/apps/backoffice/package.json +2 -2
- package/templates/turborepo/package.json +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-friday/create-app",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.2",
|
|
4
4
|
"description": "Create a Next Friday project from a template.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"create",
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
"template",
|
|
9
9
|
"next-friday"
|
|
10
10
|
],
|
|
11
|
-
"homepage": "https://github.com/next-friday/create-friday-app#readme",
|
|
11
|
+
"homepage": "https://github.com/next-friday/create-next-friday-app#readme",
|
|
12
12
|
"bugs": {
|
|
13
|
-
"url": "https://github.com/next-friday/create-friday-app/issues"
|
|
13
|
+
"url": "https://github.com/next-friday/create-next-friday-app/issues"
|
|
14
14
|
},
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
17
|
-
"url": "git+https://github.com/next-friday/create-friday-app.git"
|
|
17
|
+
"url": "git+https://github.com/next-friday/create-next-friday-app.git"
|
|
18
18
|
},
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"author": "Next Friday",
|
|
@@ -37,22 +37,22 @@
|
|
|
37
37
|
"@changesets/cli": "3.0.3",
|
|
38
38
|
"@commitlint/cli": "21.2.4",
|
|
39
39
|
"@next-friday/commitlint-config-friday": "4.0.0",
|
|
40
|
-
"@next-friday/eslint-config-friday": "5.
|
|
40
|
+
"@next-friday/eslint-config-friday": "5.1.0",
|
|
41
41
|
"@next-friday/prettier-config-friday": "4.0.0",
|
|
42
|
-
"@types/node": "26.6.
|
|
42
|
+
"@types/node": "26.6.6",
|
|
43
43
|
"@vitest/coverage-v8": "5.0.5",
|
|
44
44
|
"editorconfig-checker": "7.0.0",
|
|
45
|
-
"eslint": "10.
|
|
45
|
+
"eslint": "10.14.0",
|
|
46
46
|
"fast-check": "4.10.2",
|
|
47
47
|
"husky": "9.1.7",
|
|
48
48
|
"jiti": "2.7.0",
|
|
49
|
-
"knip": "6.
|
|
49
|
+
"knip": "6.44.1",
|
|
50
50
|
"lint-staged": "17.6.0",
|
|
51
|
-
"pkg-pr-new": "0.0.
|
|
51
|
+
"pkg-pr-new": "0.0.93",
|
|
52
52
|
"prettier": "3.9.10",
|
|
53
53
|
"publint": "0.3.25",
|
|
54
54
|
"sort-package-json": "4.1.0",
|
|
55
|
-
"tsdown": "0.23.
|
|
55
|
+
"tsdown": "0.23.4",
|
|
56
56
|
"typescript": "6.0.3",
|
|
57
57
|
"vitest": "5.0.5"
|
|
58
58
|
},
|
|
@@ -9,7 +9,7 @@ description: Write intent.md, the proto-spec that starts a change. Use whenever
|
|
|
9
9
|
2. Brainstorm until the idea is concrete. Ask the questions an analyst would ask: scope, users, constraints, and what success looks like.
|
|
10
10
|
3. Write the result as `intent/<change>/intent.md`, where `<change>` is a short kebab-case name, using the template below.
|
|
11
11
|
4. Ask the originator to correct anything you misunderstood.
|
|
12
|
-
5. Commit `intent.md` and open a pull request. The product owner accepts it by merging the pull request, or rejects it by
|
|
12
|
+
5. Commit `intent.md` and open a pull request. The product owner accepts it by merging the pull request, or rejects it by setting `Status: rejected.` and merging.
|
|
13
13
|
|
|
14
14
|
## Template
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ description: Write intent.md, the proto-spec that starts a change. Use whenever
|
|
|
9
9
|
2. Brainstorm until the idea is concrete. Ask the questions an analyst would ask: scope, users, constraints, and what success looks like.
|
|
10
10
|
3. Write the result as `intent/<change>/intent.md`, where `<change>` is a short kebab-case name, using the template below.
|
|
11
11
|
4. Ask the originator to correct anything you misunderstood.
|
|
12
|
-
5. Commit `intent.md` and open a pull request. The product owner accepts it by merging the pull request, or rejects it by
|
|
12
|
+
5. Commit `intent.md` and open a pull request. The product owner accepts it by merging the pull request, or rejects it by setting `Status: rejected.` and merging.
|
|
13
13
|
|
|
14
14
|
## Template
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ description: Write intent.md, the proto-spec that starts a change. Use whenever
|
|
|
9
9
|
2. Brainstorm until the idea is concrete. Ask the questions an analyst would ask: scope, users, constraints, and what success looks like.
|
|
10
10
|
3. Write the result as `intent/<change>/intent.md`, where `<change>` is a short kebab-case name, using the template below.
|
|
11
11
|
4. Ask the originator to correct anything you misunderstood.
|
|
12
|
-
5. Commit `intent.md` and open a pull request. The product owner accepts it by merging the pull request, or rejects it by
|
|
12
|
+
5. Commit `intent.md` and open a pull request. The product owner accepts it by merging the pull request, or rejects it by setting `Status: rejected.` and merging.
|
|
13
13
|
|
|
14
14
|
## Template
|
|
15
15
|
|
|
@@ -2,11 +2,18 @@
|
|
|
2
2
|
set -e
|
|
3
3
|
|
|
4
4
|
# The first push of a new repository creates main on the remote, so it is the only push allowed there.
|
|
5
|
-
while read -r
|
|
5
|
+
while read -r local_ref _ remote_ref remote_oid; do
|
|
6
6
|
if [ "$remote_ref" = refs/heads/main ] && [ -n "$(printf '%s' "$remote_oid" | tr -d 0)" ]; then
|
|
7
7
|
echo "pre-push: do not push to main. Push your branch and open a pull request." >&2
|
|
8
8
|
exit 1
|
|
9
9
|
fi
|
|
10
|
+
branch="${remote_ref#refs/heads/}"
|
|
11
|
+
if [ "$branch" != "$remote_ref" ] && [ -z "$(printf '%s' "$remote_oid" | tr -d 0)" ] \
|
|
12
|
+
&& { git rev-parse --verify --quiet "refs/remotes/$1/$branch" > /dev/null \
|
|
13
|
+
|| [ "$(git config "branch.${local_ref#refs/heads/}.merge" || true)" = "$remote_ref" ]; }; then
|
|
14
|
+
echo "pre-push: $branch no longer exists on $1. Push the work to a new branch from the latest $1/main and open a pull request. To reuse the name, run git fetch --prune and git branch --unset-upstream first." >&2
|
|
15
|
+
exit 1
|
|
16
|
+
fi
|
|
10
17
|
done
|
|
11
18
|
|
|
12
19
|
pnpm check || {
|
package/templates/base/SETUP.md
CHANGED
|
@@ -4,7 +4,7 @@ This project follows Anthropic's [AI-native SDLC Playbook](https://claude.com/re
|
|
|
4
4
|
|
|
5
5
|
## How a change flows
|
|
6
6
|
|
|
7
|
-
1. **Plan:** an idea, a ticket, or an incident becomes `intent/<change>/intent.md` (`write-intent` skill). The product owner merges or
|
|
7
|
+
1. **Plan:** an idea, a ticket, or an incident becomes `intent/<change>/intent.md` (`write-intent` skill). The product owner merges it with `Status: accepted.` or `Status: rejected.`
|
|
8
8
|
2. **Design:** `spec.md` is written from the accepted intent with the policy skills loaded (`write-spec` skill). The product owner resolves concerns with the policy owners.
|
|
9
9
|
3. **Build:** the engineer starts in plan mode, approves the plan, and commits it as `plan.md`. A tech lead approves higher-risk plans.
|
|
10
10
|
4. **Test:** the session runs **Verifying your work** in `AGENTS.md`.
|
|
@@ -54,6 +54,8 @@ Also replace the owner placeholder in `.github/zizmor.yml`.
|
|
|
54
54
|
**Who:** a repository admin.
|
|
55
55
|
|
|
56
56
|
- **Actions → General → Workflow permissions:** select **Read repository contents and packages permissions**. Every workflow requests the extra permissions it needs.
|
|
57
|
+
- **General → Pull Requests:** select **Automatically delete head branches**, so a branch is deleted when its pull request merges.
|
|
58
|
+
- **General → Pull Requests → Allow squash merging:** set the default commit message to the pull request title alone ([configure commit squashing](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/configuring-commit-squashing-for-pull-requests)). Each commit on `main` is then the pull request title and number, with only co-author trailers in the body; the pull request description holds the why.
|
|
57
59
|
- **Advanced Security:** enable private vulnerability reporting, Dependabot alerts, Dependabot security updates, secret scanning, and push protection. `SECURITY.md` sends reporters to private vulnerability reporting.
|
|
58
60
|
- **Rules → Rulesets:** protect `main` with:
|
|
59
61
|
- squash merges only, a linear history, and no force pushes or deletion;
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
This folder is the intent home. Every change starts here as an `intent.md`, and its record stays here. Git history keeps the author, the time, and every revision of each file.
|
|
4
4
|
|
|
5
5
|
- Each change has its own folder, `intent/<change>/`, where `<change>` is a short kebab-case name. The folder holds `intent.md` (Plan), then `spec.md` (Design), then `plan.md` (Build).
|
|
6
|
-
- **Plan.** An idea, a ticket, or an incident becomes `intent.md`, written with the `write-intent` skill. The product owner reviews and corrects it before it is committed. Merging its pull request accepts it
|
|
6
|
+
- **Plan.** An idea, a ticket, or an incident becomes `intent.md`, written with the `write-intent` skill. The product owner reviews and corrects it before it is committed. Merging its pull request records the decision: `Status: accepted.` accepts it, and `Status: rejected.` rejects it.
|
|
7
7
|
- **Design.** The `write-spec` skill turns the accepted `intent.md` into `spec.md`, committed alongside it. The product owner reviews the spec against the idea and resolves each area of concern with its policy owner. Accepting the spec starts the build.
|
|
8
8
|
- **Build.** The engineer starts in plan mode with `intent.md` and `spec.md`, and commits the approved plan as `plan.md`. When implementation departs from the plan, `plan.md` changes in the same commit.
|
|
@@ -59,16 +59,16 @@
|
|
|
59
59
|
"@next-friday/commitlint-config-friday": "4.0.0",
|
|
60
60
|
"@next-friday/eslint-config-friday": "5.1.0",
|
|
61
61
|
"@next-friday/prettier-config-friday": "4.0.0",
|
|
62
|
-
"@types/node": "26.6.
|
|
62
|
+
"@types/node": "26.6.6",
|
|
63
63
|
"@types/supertest": "7.2.1",
|
|
64
64
|
"@vitest/coverage-v8": "5.0.5",
|
|
65
|
-
"dependency-cruiser": "18.7.
|
|
65
|
+
"dependency-cruiser": "18.7.1",
|
|
66
66
|
"editorconfig-checker": "7.0.0",
|
|
67
|
-
"eslint": "10.
|
|
67
|
+
"eslint": "10.14.0",
|
|
68
68
|
"fast-check": "4.10.2",
|
|
69
69
|
"husky": "9.1.7",
|
|
70
70
|
"jiti": "2.7.0",
|
|
71
|
-
"knip": "6.
|
|
71
|
+
"knip": "6.44.1",
|
|
72
72
|
"lint-staged": "17.6.0",
|
|
73
73
|
"prettier": "3.9.10",
|
|
74
74
|
"sort-package-json": "4.1.0",
|
|
@@ -52,17 +52,17 @@
|
|
|
52
52
|
"@next/eslint-plugin-next": "16.4.3",
|
|
53
53
|
"@playwright/test": "1.64.1",
|
|
54
54
|
"@tailwindcss/postcss": "4.3.3",
|
|
55
|
-
"@types/node": "26.6.
|
|
55
|
+
"@types/node": "26.6.6",
|
|
56
56
|
"@types/react": "19.3.0",
|
|
57
57
|
"@types/react-dom": "19.3.0",
|
|
58
58
|
"@vitest/coverage-v8": "5.0.5",
|
|
59
|
-
"dependency-cruiser": "18.7.
|
|
59
|
+
"dependency-cruiser": "18.7.1",
|
|
60
60
|
"editorconfig-checker": "7.0.0",
|
|
61
|
-
"eslint": "10.
|
|
61
|
+
"eslint": "10.14.0",
|
|
62
62
|
"fast-check": "4.10.2",
|
|
63
63
|
"husky": "9.1.7",
|
|
64
64
|
"jiti": "2.7.0",
|
|
65
|
-
"knip": "6.
|
|
65
|
+
"knip": "6.44.1",
|
|
66
66
|
"lint-staged": "17.6.0",
|
|
67
67
|
"prettier": "3.9.10",
|
|
68
68
|
"prettier-plugin-tailwindcss": "0.8.1",
|
|
@@ -44,15 +44,15 @@
|
|
|
44
44
|
"@next-friday/commitlint-config-friday": "4.0.0",
|
|
45
45
|
"@next-friday/eslint-config-friday": "5.1.0",
|
|
46
46
|
"@next-friday/prettier-config-friday": "4.0.0",
|
|
47
|
-
"@types/node": "26.6.
|
|
47
|
+
"@types/node": "26.6.6",
|
|
48
48
|
"@vitest/coverage-v8": "5.0.5",
|
|
49
|
-
"dependency-cruiser": "18.7.
|
|
49
|
+
"dependency-cruiser": "18.7.1",
|
|
50
50
|
"editorconfig-checker": "7.0.0",
|
|
51
|
-
"eslint": "10.
|
|
51
|
+
"eslint": "10.14.0",
|
|
52
52
|
"fast-check": "4.10.2",
|
|
53
53
|
"husky": "9.1.7",
|
|
54
54
|
"jiti": "2.7.0",
|
|
55
|
-
"knip": "6.
|
|
55
|
+
"knip": "6.44.1",
|
|
56
56
|
"lint-staged": "17.6.0",
|
|
57
57
|
"prettier": "3.9.10",
|
|
58
58
|
"sort-package-json": "4.1.0",
|
|
@@ -61,17 +61,17 @@
|
|
|
61
61
|
"@next-friday/prettier-config-friday": "4.0.0",
|
|
62
62
|
"@next/eslint-plugin-next": "16.4.3",
|
|
63
63
|
"@playwright/test": "1.64.1",
|
|
64
|
-
"@types/node": "26.6.
|
|
64
|
+
"@types/node": "26.6.6",
|
|
65
65
|
"@types/react": "19.3.0",
|
|
66
66
|
"@types/react-dom": "19.3.0",
|
|
67
67
|
"@vitest/coverage-v8": "5.0.5",
|
|
68
|
-
"dependency-cruiser": "18.7.
|
|
68
|
+
"dependency-cruiser": "18.7.1",
|
|
69
69
|
"editorconfig-checker": "7.0.0",
|
|
70
|
-
"eslint": "10.
|
|
70
|
+
"eslint": "10.14.0",
|
|
71
71
|
"fast-check": "4.10.2",
|
|
72
72
|
"husky": "9.1.7",
|
|
73
73
|
"jiti": "2.7.0",
|
|
74
|
-
"knip": "6.
|
|
74
|
+
"knip": "6.44.1",
|
|
75
75
|
"lint-staged": "17.6.0",
|
|
76
76
|
"prettier": "3.9.10",
|
|
77
77
|
"sort-package-json": "4.1.0",
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@playwright/test": "1.64.1",
|
|
27
27
|
"@tailwindcss/postcss": "4.3.3",
|
|
28
|
-
"@types/node": "26.6.
|
|
28
|
+
"@types/node": "26.6.6",
|
|
29
29
|
"@types/react": "19.3.0",
|
|
30
30
|
"@types/react-dom": "19.3.0",
|
|
31
31
|
"@vitest/coverage-v8": "5.0.5",
|
|
32
|
-
"dependency-cruiser": "18.7.
|
|
32
|
+
"dependency-cruiser": "18.7.1",
|
|
33
33
|
"fast-check": "4.10.2",
|
|
34
34
|
"tailwindcss": "4.3.3",
|
|
35
35
|
"typescript": "7.0.2",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@playwright/test": "1.64.1",
|
|
37
|
-
"@types/node": "26.6.
|
|
37
|
+
"@types/node": "26.6.6",
|
|
38
38
|
"@types/react": "19.3.0",
|
|
39
39
|
"@types/react-dom": "19.3.0",
|
|
40
40
|
"@vitest/coverage-v8": "5.0.5",
|
|
41
|
-
"dependency-cruiser": "18.7.
|
|
41
|
+
"dependency-cruiser": "18.7.1",
|
|
42
42
|
"fast-check": "4.10.2",
|
|
43
43
|
"typescript": "7.0.2",
|
|
44
44
|
"vitest": "5.0.5"
|
|
@@ -49,13 +49,13 @@
|
|
|
49
49
|
"@next-friday/eslint-config-friday": "5.1.0",
|
|
50
50
|
"@next-friday/prettier-config-friday": "4.0.0",
|
|
51
51
|
"@next/eslint-plugin-next": "16.4.3",
|
|
52
|
-
"@types/node": "26.6.
|
|
52
|
+
"@types/node": "26.6.6",
|
|
53
53
|
"editorconfig-checker": "7.0.0",
|
|
54
|
-
"eslint": "10.
|
|
54
|
+
"eslint": "10.14.0",
|
|
55
55
|
"fast-check": "4.10.2",
|
|
56
56
|
"husky": "9.1.7",
|
|
57
57
|
"jiti": "2.7.0",
|
|
58
|
-
"knip": "6.
|
|
58
|
+
"knip": "6.44.1",
|
|
59
59
|
"lint-staged": "17.6.0",
|
|
60
60
|
"prettier": "3.9.10",
|
|
61
61
|
"prettier-plugin-tailwindcss": "0.8.1",
|