create-filegrc 0.3.4 → 0.5.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 (60) hide show
  1. package/README.md +4 -3
  2. package/package.json +1 -1
  3. package/src/cli.js +12 -4
  4. package/src/defaults.js +299 -123
  5. package/src/index.js +30 -17
  6. package/template/AGENTS.md +55 -17
  7. package/template/README.md +20 -9
  8. package/template/WORKSPACE.md +13 -0
  9. package/template/data/AGENTS.md +41 -11
  10. package/template/data/action-items/AGENTS.md +2 -2
  11. package/template/data/appointments/appointment-independent-policy-reviewer.json +11 -0
  12. package/template/data/appointments/appointment-policy-owner.json +11 -0
  13. package/template/data/audits/AGENTS.md +1 -1
  14. package/template/data/collection-reviews/collection-review-complementary-control.json +10 -0
  15. package/template/data/collection-reviews/collection-review-framework.json +10 -0
  16. package/template/data/collection-reviews/collection-review-person.json +10 -0
  17. package/template/data/collection-reviews/collection-review-system.json +10 -0
  18. package/template/data/collection-reviews/collection-review-vendor.json +10 -0
  19. package/template/data/documents/document-business-continuity-disaster-recovery.json +14 -13
  20. package/template/data/documents/document-business-continuity-disaster-recovery.md +3 -1
  21. package/template/data/documents/document-contractor-policy-acknowledgement.json +12 -12
  22. package/template/data/documents/document-contractor-training-acknowledgement.json +15 -13
  23. package/template/data/documents/document-data-retention-schedule.json +11 -12
  24. package/template/data/documents/document-employee-handbook-acknowledgement.json +12 -12
  25. package/template/data/documents/document-employee-policy-acknowledgement.json +12 -12
  26. package/template/data/documents/document-employee-training-acknowledgement.json +15 -13
  27. package/template/data/documents/document-incident-response-plan.json +14 -13
  28. package/template/data/documents/document-incident-response-plan.md +4 -2
  29. package/template/data/documents/document-soc2-management-assertion.json +3 -3
  30. package/template/data/documents/document-soc2-management-representation.json +3 -3
  31. package/template/data/documents/document-soc2-period-completeness.json +3 -3
  32. package/template/data/documents/document-soc2-system-description.json +3 -3
  33. package/template/data/evidence/AGENTS.md +3 -3
  34. package/template/data/obligation-events/AGENTS.md +2 -2
  35. package/template/data/obligations/AGENTS.md +1 -1
  36. package/template/data/people/person-program-lead.json +9 -0
  37. package/template/data/policies/AGENTS.md +1 -1
  38. package/template/data/policies/policy-anti-bribery-corruption.json +10 -15
  39. package/template/data/policies/policy-anti-bribery-corruption.md +1 -1
  40. package/template/data/policies/policy-clear-desk-screen.json +9 -14
  41. package/template/data/policies/policy-clear-desk-screen.md +1 -1
  42. package/template/data/policies/policy-data-protection-handling.json +13 -24
  43. package/template/data/policies/policy-data-protection-handling.md +2 -2
  44. package/template/data/policies/policy-employee-handbook.json +9 -18
  45. package/template/data/policies/policy-information-security.json +11 -42
  46. package/template/data/policies/policy-information-security.md +3 -3
  47. package/template/data/policies/policy-mobile-computing-communications.json +9 -18
  48. package/template/data/policies/policy-mobile-computing-communications.md +1 -1
  49. package/template/data/renderer.json +1 -3
  50. package/template/data/systems/system-filegrc-program-repository.md +2 -2
  51. package/template/data/training/training-anti-bribery-high-risk-roles.json +1 -2
  52. package/template/data/training/training-privileged-sensitive-roles.json +1 -2
  53. package/template/data/training/training-secure-development.json +1 -2
  54. package/template/data/training/training-security-awareness.json +7 -9
  55. package/template/data/training/training-security-awareness.md +1 -1
  56. package/template/data/workspace.json +19 -8
  57. package/template/docs/filegrc-home.png +0 -0
  58. package/template/package.json +3 -2
  59. package/template-parameters.json +6 -1
  60. package/template/data/people/person-policy-owner.json +0 -10
package/README.md CHANGED
@@ -9,9 +9,9 @@ npm run validate
9
9
  npm run serve
10
10
  ```
11
11
 
12
- Setup asks for the legal organization name, the initial policy owner and their email, a security reporting address, and the program timezone. The generated private project includes a starter Security program, Program Readiness, a policy-driven Work Queue, Policy Events that add linked tasks, later audit preparation, evidence packets, and one dependency: `filegrc`.
12
+ Setup asks for the legal organization name, the initial program lead and their organization job title and email, a security reporting address, and the program timezone. The generated Person records the lead’s actual position, while a separate dated Policy Owner Appointment owns the starter work. The generated private project includes a starter Security program, Program Readiness, a policy-driven Work Queue, Policy Events that add linked tasks, later audit preparation, evidence packets, and one dependency: `filegrc`.
13
13
 
14
- Creation has two layers. The five-record foundation contains workspace settings, the initial owner, the oversight team, renderer settings, and the filegrc system of record. The default `security` starter adds the framework references, proposed policies, controls, obligations, documents, and training records. Pass `--starter foundation` when you want to stop before selecting a framework.
14
+ Creation has two layers. The six-record foundation contains workspace settings, the initial program lead, the Policy Owner Appointment, the oversight team, renderer settings, and the filegrc system of record. The default `security` starter adds the framework references, proposed policies, controls, obligations, documents, and training records. Pass `--starter foundation` when you want to stop before selecting a framework.
15
15
 
16
16
  For one noninteractive run, pass company and service fields together or use `--config setup.json`. The optional `setup` object defines the service boundary and management goal after installation. Use `--filegrc-package <directory>` to exercise unpublished local engine changes instead of installing the registry release. This writes a machine-local `file:` dependency, so replace it with a released version before sharing the generated workspace.
17
17
 
@@ -19,6 +19,7 @@ For one noninteractive run, pass company and service fields together or use `--c
19
19
  {
20
20
  "companyName": "Example Company",
21
21
  "policyOwnerName": "Security Owner",
22
+ "policyOwnerJobTitle": "Chief Executive Officer",
22
23
  "policyOwnerEmail": "owner@example.com",
23
24
  "securityContactEmail": "security@example.com",
24
25
  "timezone": "America/Chicago",
@@ -38,7 +39,7 @@ For one noninteractive run, pass company and service fields together or use `--c
38
39
  npx create-filegrc@latest company-grc --config setup.json
39
40
  ```
40
41
 
41
- Generated workspaces also include layered `AGENTS.md` instructions and model-driven headless commands. `filegrc program-path` gives agents the same six steps, exact page guidance, current status, and next actions shown in the renderer. Agents can define program scope, approve policies, implement controls, test External Evidence, complete policy work, trigger event tasks, and prepare later audit packets through the same domain functions used by the renderer.
42
+ Generated workspaces also include layered `AGENTS.md` instructions and model-driven headless commands. `filegrc program-path` gives agents the same five steps, exact page guidance, current status, and next actions shown in the renderer. Agents can define program scope, approve policies, implement controls and their evidence sources, complete policy work, trigger event tasks, and prepare later audit packets through the same domain functions used by the renderer.
42
43
 
43
44
  Git is initialized on `main` when needed. New workspaces use trunk mode with `main` and `origin`. Browser editing becomes available after that branch has an upstream; each save fast-forwards, validates, commits, and pushes automatically. Existing parent repositories are supported and never receive a nested Git repository.
44
45
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-filegrc",
3
- "version": "0.3.4",
3
+ "version": "0.5.0",
4
4
  "description": "Create a filegrc workspace for a SOC 2 program",
5
5
  "license": "MIT",
6
6
  "repository": {
package/src/cli.js CHANGED
@@ -68,6 +68,10 @@ export async function runCli(argv = process.argv.slice(2)) {
68
68
  console.log("");
69
69
  console.log(` cd ${shellQuote(result.target)}`);
70
70
  if (options.install === false) console.log(" npm install");
71
+ if (result.gitMode !== "existing-worktree") {
72
+ console.log(" git add .");
73
+ console.log(' git commit -m "Initialize FileGRC program"');
74
+ }
71
75
  if (!result.setup) console.log(" npx filegrc setup");
72
76
  if (result.setup) console.log(" npx filegrc program-path --next --json");
73
77
  console.log(" npm run validate");
@@ -84,7 +88,9 @@ export async function runCli(argv = process.argv.slice(2)) {
84
88
  ? ` 1. Confirm the selected assurance goal with management: ${assuranceGoalLabel(result.setup.target.assuranceGoal)}.`
85
89
  : " 1. Select and confirm the assurance goal.");
86
90
  console.log(" 2. Appoint an independent reviewer who is separate from the policy owner.");
87
- console.log("Review the generated records, then commit the approved baseline.");
91
+ console.log(result.gitMode === "existing-worktree"
92
+ ? "Review the generated records and commit only this workspace's approved baseline."
93
+ : "Connect the dedicated private origin and push main before using browser writes.");
88
94
  }
89
95
 
90
96
  function shellQuote(value) {
@@ -118,6 +124,7 @@ function parseArgs(argv) {
118
124
  else if (name === "config") options.config = next();
119
125
  else if (name === "company-name") options.companyName = next();
120
126
  else if (name === "policy-owner-name") options.policyOwnerName = next();
127
+ else if (name === "policy-owner-job-title") options.policyOwnerJobTitle = next();
121
128
  else if (name === "policy-owner-email") options.policyOwnerEmail = next();
122
129
  else if (name === "security-contact-email") options.securityContactEmail = next();
123
130
  else if (name === "timezone") options.timezone = next();
@@ -131,7 +138,7 @@ function parseArgs(argv) {
131
138
  else if (name === "boundary") setup.boundary = next();
132
139
  else if (name === "service-owner") setup.ownerId = next();
133
140
  else if (name === "criticality") setup.criticality = next();
134
- else if (name === "classification") setup.dataClassification = next();
141
+ else if (name === "classification") setup.classificationId = next();
135
142
  else if (name === "internet-exposed") setup.internetExposed = booleanOption(next(), "internet-exposed");
136
143
  else if (name === "program-goal") setup.programGoal = next();
137
144
  else if (name === "setup-draft") setup.draft = true;
@@ -148,7 +155,8 @@ Create a filegrc workspace for a SOC 2 program.
148
155
  Options:
149
156
  --config <json-file|-> Read creation and optional setup values
150
157
  --company-name <legal-name> Legal organization name
151
- --policy-owner-name <name> Initial policy owner
158
+ --policy-owner-name <name> Initial program lead
159
+ --policy-owner-job-title <title> Program lead's organization job title
152
160
  --policy-owner-email <email> Policy owner's email address
153
161
  --security-contact-email <email> Security reporting address
154
162
  --timezone <iana-timezone> Program timezone, such as America/Chicago
@@ -160,7 +168,7 @@ Options:
160
168
  --repository-remote <name> Browser sync remote, defaults to origin
161
169
  --service-name <name> Complete service setup after creation
162
170
  --boundary <description> Initial service boundary
163
- --service-owner <person-id> Defaults to person-policy-owner
171
+ --service-owner <person-id> Defaults to person-program-lead
164
172
  --criticality <level> low, medium, high, or critical
165
173
  --classification <name> Initial data classification
166
174
  --internet-exposed <bool> true or false