@cbnventures/nova 0.16.2 → 0.17.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.
Files changed (77) hide show
  1. package/README.md +8 -0
  2. package/build/package.json +1 -1
  3. package/build/src/cli/generate/github/funding.d.ts.map +1 -1
  4. package/build/src/cli/generate/github/funding.js +5 -1
  5. package/build/src/cli/generate/github/funding.js.map +1 -1
  6. package/build/src/cli/generate/github/issue-template.d.ts.map +1 -1
  7. package/build/src/cli/generate/github/issue-template.js +6 -1
  8. package/build/src/cli/generate/github/issue-template.js.map +1 -1
  9. package/build/src/cli/generate/github/workflows.d.ts +3 -2
  10. package/build/src/cli/generate/github/workflows.d.ts.map +1 -1
  11. package/build/src/cli/generate/github/workflows.js +32 -30
  12. package/build/src/cli/generate/github/workflows.js.map +1 -1
  13. package/build/src/cli/generate/must-haves/agent-conventions.d.ts.map +1 -1
  14. package/build/src/cli/generate/must-haves/agent-conventions.js +5 -2
  15. package/build/src/cli/generate/must-haves/agent-conventions.js.map +1 -1
  16. package/build/src/cli/generate/must-haves/dotenv.d.ts.map +1 -1
  17. package/build/src/cli/generate/must-haves/dotenv.js +21 -8
  18. package/build/src/cli/generate/must-haves/dotenv.js.map +1 -1
  19. package/build/src/cli/generate/must-haves/editorconfig.d.ts.map +1 -1
  20. package/build/src/cli/generate/must-haves/editorconfig.js +6 -2
  21. package/build/src/cli/generate/must-haves/editorconfig.js.map +1 -1
  22. package/build/src/cli/generate/must-haves/gitignore.d.ts.map +1 -1
  23. package/build/src/cli/generate/must-haves/gitignore.js +12 -4
  24. package/build/src/cli/generate/must-haves/gitignore.js.map +1 -1
  25. package/build/src/cli/generate/must-haves/license.d.ts.map +1 -1
  26. package/build/src/cli/generate/must-haves/license.js +9 -80
  27. package/build/src/cli/generate/must-haves/license.js.map +1 -1
  28. package/build/src/cli/generate/must-haves/read-me.d.ts.map +1 -1
  29. package/build/src/cli/generate/must-haves/read-me.js +7 -2
  30. package/build/src/cli/generate/must-haves/read-me.js.map +1 -1
  31. package/build/src/cli/recipe/package-json/cleanup.d.ts.map +1 -1
  32. package/build/src/cli/recipe/package-json/cleanup.js +2 -1
  33. package/build/src/cli/recipe/package-json/cleanup.js.map +1 -1
  34. package/build/src/cli/utility/changelog.d.ts.map +1 -1
  35. package/build/src/cli/utility/changelog.js +2 -1
  36. package/build/src/cli/utility/changelog.js.map +1 -1
  37. package/build/src/lib/constants.d.ts +3 -0
  38. package/build/src/lib/constants.d.ts.map +1 -0
  39. package/build/src/lib/constants.js +2 -0
  40. package/build/src/lib/constants.js.map +1 -0
  41. package/build/src/lib/utility.d.ts +3 -2
  42. package/build/src/lib/utility.d.ts.map +1 -1
  43. package/build/src/lib/utility.js +58 -4
  44. package/build/src/lib/utility.js.map +1 -1
  45. package/build/src/lib/workflow-templates.js +2 -2
  46. package/build/src/presets/eslint/dx-ignore.d.ts.map +1 -1
  47. package/build/src/presets/eslint/dx-ignore.js +7 -0
  48. package/build/src/presets/eslint/dx-ignore.js.map +1 -1
  49. package/build/src/types/cli/generate/github/workflows.d.ts +39 -24
  50. package/build/src/types/cli/generate/must-haves/agent-conventions.d.ts +2 -0
  51. package/build/src/types/cli/generate/must-haves/dotenv.d.ts +2 -0
  52. package/build/src/types/cli/generate/must-haves/license.d.ts +0 -17
  53. package/build/src/types/lib/constants.d.ts +6 -0
  54. package/build/src/types/lib/utility.d.ts +52 -0
  55. package/build/src/types/tests/cli/generate/github/funding.test.d.ts +6 -16
  56. package/build/src/types/tests/cli/generate/github/issue-template.test.d.ts +7 -5
  57. package/build/src/types/tests/cli/generate/github/workflows-helpers.test.d.ts +31 -9
  58. package/build/src/types/tests/cli/generate/github/workflows.test.d.ts +12 -0
  59. package/build/src/types/tests/cli/generate/must-haves/dotenv.test.d.ts +9 -5
  60. package/build/src/types/tests/cli/generate/must-haves/editorconfig.test.d.ts +5 -13
  61. package/build/src/types/tests/cli/generate/must-haves/gitignore.test.d.ts +5 -5
  62. package/build/src/types/tests/cli/generate/must-haves/license.test.d.ts +2 -0
  63. package/build/src/types/tests/cli/generate/must-haves/read-me.test.d.ts +12 -2
  64. package/build/src/types/tests/lib/utility.test.d.ts +42 -0
  65. package/build/templates/generators/github/workflows/publish/targets/aws-amplify-nextjs.yml +1 -1
  66. package/build/templates/generators/github/workflows/publish/targets/cloudflare-pages-docusaurus.yml +1 -1
  67. package/build/templates/generators/github/workflows/publish/targets/github-packages.yml +2 -1
  68. package/build/templates/generators/github/workflows/publish/targets/github-pages-docusaurus.yml +1 -1
  69. package/build/templates/generators/github/workflows/publish/targets/npm.yml +2 -1
  70. package/build/templates/generators/github/workflows/publish/targets/vercel-nextjs.yml +1 -1
  71. package/build/templates/generators/must-haves/agent-conventions/cursorrules +54 -0
  72. package/build/templates/generators/must-haves/dotenv/env +14 -0
  73. package/build/templates/generators/must-haves/dotenv/env.sample +14 -0
  74. package/build/templates/generators/must-haves/editorconfig/editorconfig +212 -0
  75. package/build/templates/generators/must-haves/gitignore/gitignore +179 -0
  76. package/build/templates/scaffold/app/nextjs/next.config.mjs +3 -1
  77. package/package.json +1 -1
@@ -11,6 +11,42 @@ import type {
11
11
  SharedWorkspaceManifestFileContents,
12
12
  } from '../shared.d.ts';
13
13
 
14
+ /**
15
+ * Lib - Utility - Build Generated File Header.
16
+ *
17
+ * @since 0.16.3
18
+ */
19
+ export type LibUtilityBuildGeneratedFileHeaderOptionsCommand = string;
20
+
21
+ export type LibUtilityBuildGeneratedFileHeaderOptionsDocsSlug = string;
22
+
23
+ export type LibUtilityBuildGeneratedFileHeaderOptionsTargetPath = string;
24
+
25
+ export type LibUtilityBuildGeneratedFileHeaderOptionsMode = 'strict' | 'fillable';
26
+
27
+ export type LibUtilityBuildGeneratedFileHeaderOptions = {
28
+ command: LibUtilityBuildGeneratedFileHeaderOptionsCommand;
29
+ docsSlug: LibUtilityBuildGeneratedFileHeaderOptionsDocsSlug;
30
+ targetPath: LibUtilityBuildGeneratedFileHeaderOptionsTargetPath;
31
+ mode: LibUtilityBuildGeneratedFileHeaderOptionsMode;
32
+ };
33
+
34
+ export type LibUtilityBuildGeneratedFileHeaderReturns = string;
35
+
36
+ export type LibUtilityBuildGeneratedFileHeaderBaseName = string;
37
+
38
+ export type LibUtilityBuildGeneratedFileHeaderExtension = string;
39
+
40
+ export type LibUtilityBuildGeneratedFileHeaderDocsUrl = string;
41
+
42
+ export type LibUtilityBuildGeneratedFileHeaderRuleLine = string;
43
+
44
+ export type LibUtilityBuildGeneratedFileHeaderIsHashStyle = boolean;
45
+
46
+ export type LibUtilityBuildGeneratedFileHeaderIsMarkdownStyle = boolean;
47
+
48
+ export type LibUtilityBuildGeneratedFileHeaderLines = string[];
49
+
14
50
  /**
15
51
  * Lib - Utility - Current Timestamp.
16
52
  *
@@ -462,6 +498,18 @@ export type LibUtilitySaveGeneratedFileContents = string;
462
498
 
463
499
  export type LibUtilitySaveGeneratedFileReplaceFile = boolean;
464
500
 
501
+ export type LibUtilitySaveGeneratedFileHeaderCommand = string;
502
+
503
+ export type LibUtilitySaveGeneratedFileHeaderDocsSlug = string;
504
+
505
+ export type LibUtilitySaveGeneratedFileHeaderMode = 'strict' | 'fillable';
506
+
507
+ export type LibUtilitySaveGeneratedFileHeader = {
508
+ command: LibUtilitySaveGeneratedFileHeaderCommand;
509
+ docsSlug: LibUtilitySaveGeneratedFileHeaderDocsSlug;
510
+ mode: LibUtilitySaveGeneratedFileHeaderMode;
511
+ };
512
+
465
513
  export type LibUtilitySaveGeneratedFileReturns = Promise<void>;
466
514
 
467
515
  export type LibUtilitySaveGeneratedFileParentDirectory = string;
@@ -470,6 +518,10 @@ export type LibUtilitySaveGeneratedFileCurrentDirectory = string;
470
518
 
471
519
  export type LibUtilitySaveGeneratedFileDisplayName = string;
472
520
 
521
+ export type LibUtilitySaveGeneratedFilePrefixedContents = string | undefined;
522
+
523
+ export type LibUtilitySaveGeneratedFileHeaderBanner = string;
524
+
473
525
  /**
474
526
  * Lib - Utility - Save Workspace Manifest.
475
527
  *
@@ -3,24 +3,14 @@
3
3
  *
4
4
  * @since 0.15.0
5
5
  */
6
- export type TestsCliGenerateGithubFundingRunOriginalCwd = string;
6
+ export type TestsCliGenerateGithubFundingRunIsProjectRootSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
7
7
 
8
- export type TestsCliGenerateGithubFundingRunTemporaryDirectory = string;
8
+ export type TestsCliGenerateGithubFundingRunLoadSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
9
9
 
10
- export type TestsCliGenerateGithubFundingRunTemporaryPrefix = string;
10
+ export type TestsCliGenerateGithubFundingRunSaveSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
11
11
 
12
- export type TestsCliGenerateGithubFundingRunSandboxRoot = string;
12
+ export type TestsCliGenerateGithubFundingRunSaveCalls = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined][];
13
13
 
14
- export type TestsCliGenerateGithubFundingRunProjectDirectory = string;
14
+ export type TestsCliGenerateGithubFundingRunTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
15
15
 
16
- export type TestsCliGenerateGithubFundingRunPackageJson = string;
17
-
18
- export type TestsCliGenerateGithubFundingRunPackageJsonPath = string;
19
-
20
- export type TestsCliGenerateGithubFundingRunNovaConfig = string;
21
-
22
- export type TestsCliGenerateGithubFundingRunNovaConfigPath = string;
23
-
24
- export type TestsCliGenerateGithubFundingRunExists = boolean;
25
-
26
- export type TestsCliGenerateGithubFundingRunFundingYmlPath = string;
16
+ export type TestsCliGenerateGithubFundingRunHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
@@ -3,12 +3,14 @@
3
3
  *
4
4
  * @since 0.15.0
5
5
  */
6
- export type TestsCliGenerateGithubIssueTemplateRunOriginalCwd = string;
6
+ export type TestsCliGenerateGithubIssueTemplateRunIsProjectRootSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
7
7
 
8
- export type TestsCliGenerateGithubIssueTemplateRunTemporaryDirectory = string;
8
+ export type TestsCliGenerateGithubIssueTemplateRunLoadSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
9
9
 
10
- export type TestsCliGenerateGithubIssueTemplateRunTemporaryPrefix = string;
10
+ export type TestsCliGenerateGithubIssueTemplateRunSaveSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
11
11
 
12
- export type TestsCliGenerateGithubIssueTemplateRunSandboxRoot = string;
12
+ export type TestsCliGenerateGithubIssueTemplateRunSaveCalls = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined][];
13
13
 
14
- export type TestsCliGenerateGithubIssueTemplateRunProjectDirectory = string;
14
+ export type TestsCliGenerateGithubIssueTemplateRunTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
15
+
16
+ export type TestsCliGenerateGithubIssueTemplateRunHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Tests - CLI - Generate - GitHub - Workflows Helpers - Build Artifact Name.
3
+ *
4
+ * @since 0.16.3
5
+ */
6
+ export type TestsCliGenerateGithubWorkflowsHelpersBuildArtifactNameResult = string;
7
+
1
8
  /**
2
9
  * Tests - CLI - Generate - GitHub - Workflows Helpers - Build Command.
3
10
  *
@@ -21,19 +28,34 @@ export type TestsCliGenerateGithubWorkflowsHelpersDetectTurboTurboConfigPath = s
21
28
  export type TestsCliGenerateGithubWorkflowsHelpersDetectTurboResult = boolean;
22
29
 
23
30
  /**
24
- * Tests - CLI - Generate - GitHub - Workflows Helpers - Render Artifact Paths.
31
+ * Tests - CLI - Generate - GitHub - Workflows Helpers - Render Upload Artifact Steps.
25
32
  *
26
- * @since 0.16.0
33
+ * @since 0.16.3
27
34
  */
28
- export type TestsCliGenerateGithubWorkflowsHelpersRenderArtifactPathsTargetMetadata = Record<string, {
29
- artifactPaths: string[];
30
- }>;
35
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetMetadataEntryArtifactPath = string;
31
36
 
32
- export type TestsCliGenerateGithubWorkflowsHelpersRenderArtifactPathsTargets = Array<{
33
- type: string; workingDir: string;
34
- }>;
37
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetMetadataEntryArtifactPaths = TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetMetadataEntryArtifactPath[];
38
+
39
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetMetadataEntry = {
40
+ artifactPaths: TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetMetadataEntryArtifactPaths;
41
+ };
42
+
43
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetMetadata = Record<string, TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetMetadataEntry>;
44
+
45
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetType = string;
46
+
47
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetWorkingDir = string;
48
+
49
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTarget = {
50
+ type: TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetType;
51
+ workingDir: TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargetWorkingDir;
52
+ };
53
+
54
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTargets = TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsTarget[];
55
+
56
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsResult = string;
35
57
 
36
- export type TestsCliGenerateGithubWorkflowsHelpersRenderArtifactPathsResult = string;
58
+ export type TestsCliGenerateGithubWorkflowsHelpersRenderUploadArtifactStepsExpected = string;
37
59
 
38
60
  /**
39
61
  * Tests - CLI - Generate - GitHub - Workflows Helpers - Resolve Workspace Name.
@@ -58,3 +58,15 @@ export type TestsCliGenerateGithubWorkflowsBuildEntrySetupLinesSetupLines = stri
58
58
  export type TestsCliGenerateGithubWorkflowsBuildEntrySetupLinesStripAnsiPattern = RegExp;
59
59
 
60
60
  export type TestsCliGenerateGithubWorkflowsBuildEntrySetupLinesJoined = string;
61
+
62
+ export type TestsCliGenerateGithubWorkflowsRunIsProjectRootSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
63
+
64
+ export type TestsCliGenerateGithubWorkflowsRunLoadSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
65
+
66
+ export type TestsCliGenerateGithubWorkflowsRunSaveSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
67
+
68
+ export type TestsCliGenerateGithubWorkflowsRunSaveCalls = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined][];
69
+
70
+ export type TestsCliGenerateGithubWorkflowsRunTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
71
+
72
+ export type TestsCliGenerateGithubWorkflowsRunHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
@@ -3,12 +3,16 @@
3
3
  *
4
4
  * @since 0.15.0
5
5
  */
6
- export type TestsCliGenerateMustHavesDotenvRunOriginalCwd = string;
6
+ export type TestsCliGenerateMustHavesDotenvRunIsProjectRootSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
7
7
 
8
- export type TestsCliGenerateMustHavesDotenvRunTemporaryDirectory = string;
8
+ export type TestsCliGenerateMustHavesDotenvRunSaveSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
9
9
 
10
- export type TestsCliGenerateMustHavesDotenvRunTemporaryPrefix = string;
10
+ export type TestsCliGenerateMustHavesDotenvRunSaveCalls = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined][];
11
11
 
12
- export type TestsCliGenerateMustHavesDotenvRunSandboxRoot = string;
12
+ export type TestsCliGenerateMustHavesDotenvRunEnvTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
13
13
 
14
- export type TestsCliGenerateMustHavesDotenvRunProjectDirectory = string;
14
+ export type TestsCliGenerateMustHavesDotenvRunEnvHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
15
+
16
+ export type TestsCliGenerateMustHavesDotenvRunSampleTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
17
+
18
+ export type TestsCliGenerateMustHavesDotenvRunSampleHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
@@ -3,20 +3,12 @@
3
3
  *
4
4
  * @since 0.15.0
5
5
  */
6
- export type TestsCliGenerateMustHavesEditorconfigRunOriginalCwd = string;
6
+ export type TestsCliGenerateMustHavesEditorconfigRunIsProjectRootSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
7
7
 
8
- export type TestsCliGenerateMustHavesEditorconfigRunTemporaryDirectory = string;
8
+ export type TestsCliGenerateMustHavesEditorconfigRunSaveSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
9
9
 
10
- export type TestsCliGenerateMustHavesEditorconfigRunTemporaryPrefix = string;
10
+ export type TestsCliGenerateMustHavesEditorconfigRunSaveCalls = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined][];
11
11
 
12
- export type TestsCliGenerateMustHavesEditorconfigRunSandboxRoot = string;
12
+ export type TestsCliGenerateMustHavesEditorconfigRunTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
13
13
 
14
- export type TestsCliGenerateMustHavesEditorconfigRunProjectDirectory = string;
15
-
16
- export type TestsCliGenerateMustHavesEditorconfigRunPackageJson = string;
17
-
18
- export type TestsCliGenerateMustHavesEditorconfigRunPackageJsonPath = string;
19
-
20
- export type TestsCliGenerateMustHavesEditorconfigRunExists = boolean;
21
-
22
- export type TestsCliGenerateMustHavesEditorconfigRunEditorconfigPath = string;
14
+ export type TestsCliGenerateMustHavesEditorconfigRunHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
@@ -3,12 +3,12 @@
3
3
  *
4
4
  * @since 0.15.0
5
5
  */
6
- export type TestsCliGenerateMustHavesGitignoreRunOriginalCwd = string;
6
+ export type TestsCliGenerateMustHavesGitignoreRunIsProjectRootSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
7
7
 
8
- export type TestsCliGenerateMustHavesGitignoreRunTemporaryDirectory = string;
8
+ export type TestsCliGenerateMustHavesGitignoreRunSaveSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
9
9
 
10
- export type TestsCliGenerateMustHavesGitignoreRunTemporaryPrefix = string;
10
+ export type TestsCliGenerateMustHavesGitignoreRunSaveCalls = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined][];
11
11
 
12
- export type TestsCliGenerateMustHavesGitignoreRunSandboxRoot = string;
12
+ export type TestsCliGenerateMustHavesGitignoreRunTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
13
13
 
14
- export type TestsCliGenerateMustHavesGitignoreRunProjectDirectory = string;
14
+ export type TestsCliGenerateMustHavesGitignoreRunHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
@@ -24,3 +24,5 @@ export type TestsCliGenerateMustHavesLicenseRunNovaConfigPath = string;
24
24
  export type TestsCliGenerateMustHavesLicenseRunExists = boolean;
25
25
 
26
26
  export type TestsCliGenerateMustHavesLicenseRunLicensePath = string;
27
+
28
+ export type TestsCliGenerateMustHavesLicenseRunResult = 'cancelled' | 'completed';
@@ -11,6 +11,18 @@ export type TestsCliGenerateMustHavesReadMeRunTemporaryPrefix = string;
11
11
 
12
12
  export type TestsCliGenerateMustHavesReadMeRunSandboxRoot = string;
13
13
 
14
+ export type TestsCliGenerateMustHavesReadMeRunIsProjectRootSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
15
+
16
+ export type TestsCliGenerateMustHavesReadMeRunLoadSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
17
+
18
+ export type TestsCliGenerateMustHavesReadMeRunSaveSpy = ReturnType<typeof import('vitest')['vi']['spyOn']>;
19
+
20
+ export type TestsCliGenerateMustHavesReadMeRunSaveCalls = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined][];
21
+
22
+ export type TestsCliGenerateMustHavesReadMeRunTargetCall = [string, string, boolean, import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined] | undefined;
23
+
24
+ export type TestsCliGenerateMustHavesReadMeRunHeaderArg = import('../../../../lib/utility.d.ts').LibUtilitySaveGeneratedFileHeader | undefined;
25
+
14
26
  export type TestsCliGenerateMustHavesReadMeRunProjectDirectory = string;
15
27
 
16
28
  export type TestsCliGenerateMustHavesReadMeRunPackageJson = string;
@@ -21,8 +33,6 @@ export type TestsCliGenerateMustHavesReadMeRunNovaConfig = string;
21
33
 
22
34
  export type TestsCliGenerateMustHavesReadMeRunNovaConfigPath = string;
23
35
 
24
- export type TestsCliGenerateMustHavesReadMeRunExists = boolean;
25
-
26
36
  export type TestsCliGenerateMustHavesReadMeRunReadmePath = string;
27
37
 
28
38
  export type TestsCliGenerateMustHavesReadMeRunReadmeContent = string;
@@ -8,6 +8,15 @@ import type {
8
8
  SharedWorkspaceManifest,
9
9
  } from '../../shared.d.ts';
10
10
 
11
+ /**
12
+ * Tests - Lib - Utility - Build Generated File Header.
13
+ *
14
+ * @since 0.16.3
15
+ */
16
+ export type TestsLibUtilityBuildGeneratedFileHeaderResult = string;
17
+
18
+ export type TestsLibUtilityBuildGeneratedFileHeaderThrew = boolean;
19
+
11
20
  /**
12
21
  * Tests - Lib - Utility - Current Timestamp.
13
22
  *
@@ -284,6 +293,39 @@ export type TestsLibUtilityRenameFileWithDateExistingFilePath = string;
284
293
 
285
294
  export type TestsLibUtilityRenameFileWithDateSecondFile = string | undefined;
286
295
 
296
+ /**
297
+ * Tests - Lib - Utility - SaveGeneratedFile (with Header).
298
+ *
299
+ * @since 0.16.3
300
+ */
301
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderOriginalCwd = string;
302
+
303
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderSandboxRoot = string;
304
+
305
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderProjectDirectory = string;
306
+
307
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderTargetPath = string;
308
+
309
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderWritten = string;
310
+
311
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderExpectedHeader = string;
312
+
313
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderHeaderOptionsCommand = string;
314
+
315
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderHeaderOptionsDocsSlug = string;
316
+
317
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderHeaderOptionsMode = 'strict' | 'fillable';
318
+
319
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderHeaderOptions = {
320
+ command: TestsLibUtilitySaveGeneratedFileWithHeaderHeaderOptionsCommand;
321
+ docsSlug: TestsLibUtilitySaveGeneratedFileWithHeaderHeaderOptionsDocsSlug;
322
+ mode: TestsLibUtilitySaveGeneratedFileWithHeaderHeaderOptionsMode;
323
+ };
324
+
325
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderFirstWrite = Stats;
326
+
327
+ export type TestsLibUtilitySaveGeneratedFileWithHeaderSecondWrite = Stats;
328
+
287
329
  /**
288
330
  * Tests - Lib - Utility - Save Workspace Manifest.
289
331
  *
@@ -12,7 +12,7 @@ publish-aws-amplify-nextjs-[__TARGET_ID__]:
12
12
  - name: "Download build artifacts"
13
13
  uses: "actions/download-artifact@v4"
14
14
  with:
15
- name: "build-output"
15
+ name: "[__ARTIFACT_NAME__]"
16
16
 
17
17
  - name: "Configure AWS credentials"
18
18
  if: "${{ env.PUBLISH == 'true' }}"
@@ -12,7 +12,7 @@ publish-cloudflare-pages-docusaurus-[__TARGET_ID__]:
12
12
  - name: "Download build artifacts"
13
13
  uses: "actions/download-artifact@v4"
14
14
  with:
15
- name: "build-output"
15
+ name: "[__ARTIFACT_NAME__]"
16
16
  path: "[__WORKING_DIR__]/build"
17
17
 
18
18
  - name: "Deploy to Cloudflare Pages"
@@ -36,7 +36,8 @@ publish-github-packages-[__TARGET_ID__]:
36
36
  - name: "Download build artifacts"
37
37
  uses: "actions/download-artifact@v4"
38
38
  with:
39
- name: "build-output"
39
+ name: "[__ARTIFACT_NAME__]"
40
+ path: "[__WORKING_DIR__]/build"
40
41
 
41
42
  - name: "Change to scoped package name"
42
43
  run: |
@@ -14,7 +14,7 @@ publish-github-pages-docusaurus-[__TARGET_ID__]:
14
14
  - name: "Download build artifacts"
15
15
  uses: "actions/download-artifact@v4"
16
16
  with:
17
- name: "build-output"
17
+ name: "[__ARTIFACT_NAME__]"
18
18
  path: "[__WORKING_DIR__]/build"
19
19
 
20
20
  - name: "Check GitHub Pages status"
@@ -28,7 +28,8 @@ publish-npm-[__TARGET_ID__]:
28
28
  - name: "Download build artifacts"
29
29
  uses: "actions/download-artifact@v4"
30
30
  with:
31
- name: "build-output"
31
+ name: "[__ARTIFACT_NAME__]"
32
+ path: "[__WORKING_DIR__]/build"
32
33
 
33
34
  - name: "Configure authentication"
34
35
  env:
@@ -18,7 +18,7 @@ publish-vercel-nextjs-[__TARGET_ID__]:
18
18
  - name: "Download build artifacts"
19
19
  uses: "actions/download-artifact@v4"
20
20
  with:
21
- name: "build-output"
21
+ name: "[__ARTIFACT_NAME__]"
22
22
 
23
23
  - name: "Install Vercel CLI"
24
24
  if: "${{ env.PUBLISH == 'true' }}"
@@ -0,0 +1,54 @@
1
+ # .cursorrules
2
+
3
+ Read and follow the conventions and rules defined in the files below.
4
+
5
+ ## Vision and Purpose
6
+
7
+ - [VISION.md](VISION.md) — Purpose, marketing copy, and glossary.
8
+
9
+ ## Project Rules
10
+
11
+ - [PROJECT_RULES.md](PROJECT_RULES.md) — Project identity, repository layout, source structure, key files, build tooling, workspace rules, project-specific patterns, documentation site, and publishing/deployment.
12
+
13
+ ## Coding Conventions
14
+
15
+ ### Universal
16
+
17
+ - [conventions/universal.md](conventions/universal.md) — Workflow, general code style, documentation style, platform build rules, and release notes format.
18
+
19
+ ### Per Language
20
+
21
+ - [conventions/typescript.md](conventions/typescript.md) — TypeScript / JavaScript conventions (type system, imports, class structure, code style, TSConfig).
22
+ - [conventions/swift.md](conventions/swift.md) — Swift conventions (documentation style, code style).
23
+ - [conventions/java.md](conventions/java.md) — Java conventions (documentation style, code style).
24
+ - [conventions/kotlin.md](conventions/kotlin.md) — Kotlin conventions (documentation style, code style).
25
+ - [conventions/csharp.md](conventions/csharp.md) — C# conventions (documentation style, code style).
26
+ - [conventions/php.md](conventions/php.md) — PHP conventions (documentation style, code style).
27
+ - [conventions/python.md](conventions/python.md) — Python conventions (documentation style, code style).
28
+ - [conventions/css.md](conventions/css.md) — CSS conventions (documentation style, code style).
29
+ - [conventions/docker.md](conventions/docker.md) — Docker conventions (documentation style, code style).
30
+ - [conventions/shell.md](conventions/shell.md) — Shell conventions (documentation style, code style).
31
+
32
+ ## Agent Directives
33
+
34
+ - **Plan before acting.** For non-trivial changes that span multiple files, outline the planned modifications and wait for approval before proceeding. The cost of pausing to align is low; the cost of unwanted changes across a codebase is high.
35
+ - **Match the scope of changes to what was requested.** Do not add features, refactor surrounding code, introduce documentation, or make improvements beyond the immediate task. If a bug fix is requested, fix the bug — do not clean up neighboring code.
36
+ - **Read before writing.** Always read existing code before suggesting modifications. Understand the patterns, conventions, and intent already present in the file before making changes.
37
+ - **Ask when intent is unclear.** If a request is ambiguous or could be interpreted multiple ways, ask for clarification rather than guessing. A wrong assumption can be more expensive than a short pause.
38
+ - **Verify your work.** After making changes, run the project's build, lint, or test commands to confirm nothing is broken. Do not leave verification to the user unless the commands are unavailable.
39
+
40
+ ## Sensitive Files
41
+
42
+ These files contain critical project information — architectural decisions, identity, and positioning that are difficult to reconstruct if lost. Edit with care and do not overwrite or remove existing content without explicit instruction.
43
+
44
+ - `VISION.md`
45
+ - `PROJECT_RULES.md`
46
+
47
+ ## Restricted Files
48
+
49
+ These files are managed externally and kept in sync across environments. Modifying them locally will cause drift and merge conflicts.
50
+
51
+ - `.cursorrules`
52
+ - `CLAUDE.md`
53
+ - `AGENTS.md`
54
+ - `conventions/*.md`
@@ -0,0 +1,14 @@
1
+ ############################
2
+ #### Node.js - Settings ####
3
+ ############################
4
+ NODE_ENV="development"
5
+
6
+ #########################
7
+ #### Nova - CLI Logs ####
8
+ #########################
9
+ LOG_LEVEL=""
10
+ LOG_TIME=""
11
+
12
+ #############################
13
+ #### Project - Variables ####
14
+ #############################
@@ -0,0 +1,14 @@
1
+ ############################
2
+ #### Node.js - Settings ####
3
+ ############################
4
+ NODE_ENV=""
5
+
6
+ #########################
7
+ #### Nova - CLI Logs ####
8
+ #########################
9
+ LOG_LEVEL=""
10
+ LOG_TIME=""
11
+
12
+ #############################
13
+ #### Project - Variables ####
14
+ #############################