gitifact 0.7.1 → 0.8.1
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/README.md +44 -28
- package/dist/THIRD_PARTY_NOTICES.txt +213 -0
- package/dist/browser/assets/Banner-c1hFCLs8.js +1 -0
- package/dist/browser/assets/Grid-BrUBBmhu.js +1 -0
- package/dist/browser/assets/HoverCard-D6keobP0.js +1 -0
- package/dist/browser/assets/{Markdown-68DgpF6D.js → Markdown-Droxhk-G.js} +3 -3
- package/dist/browser/assets/MetadataListItem-C3SqHyk0.js +1 -0
- package/dist/browser/assets/PretendardVariable-CJuje-Rk.woff2 +0 -0
- package/dist/browser/assets/Selector-D_xYW7R_.js +2 -0
- package/dist/browser/assets/Tab-VVHagF2Z.js +1 -0
- package/dist/browser/assets/{Table-GZptlOQa.js → Table-D4v8xCrw.js} +2 -2
- package/dist/browser/assets/TimestampHoverCard-qfGbCkoP.js +1 -0
- package/dist/browser/assets/Token-BLd8-jfF.js +1 -0
- package/dist/browser/assets/about-DeUi-_2z.js +3 -0
- package/dist/browser/assets/activity-CiuGYDQ8.jpg +0 -0
- package/dist/browser/assets/activity-timeline-BEeyw2GA.css +1 -0
- package/dist/browser/assets/activity-timeline-bFoqFwVu.js +2 -0
- package/dist/browser/assets/changelog-Brd1Ninm.js +2 -0
- package/dist/browser/assets/commit-CiMtFlZl.js +4 -0
- package/dist/browser/assets/commit-DVyOH45R.css +1 -0
- package/dist/browser/assets/contributor-2mkEa2Wo.css +1 -0
- package/dist/browser/assets/contributor-C_IskSHq.js +1 -0
- package/dist/browser/assets/contributors-CPdOQKMF.css +1 -0
- package/dist/browser/assets/contributors-CbwXLc7M.js +1 -0
- package/dist/browser/assets/contributors._email-BRfre3dw.js +1 -0
- package/dist/browser/assets/contributors.index-CV84owW7.js +1 -0
- package/dist/browser/assets/dashboard-CMSj2wu3.css +1 -0
- package/dist/browser/assets/dashboard.index-CQdr7hsf.js +1 -0
- package/dist/browser/assets/document-BZmiLx-e.js +2 -0
- package/dist/browser/assets/document-DEGaf2yT.css +1 -0
- package/dist/browser/assets/document-Drgtj94X.css +1 -0
- package/dist/browser/assets/document-JLY2-z8S.js +19 -0
- package/dist/browser/assets/feature-requirements-CA8f9Bcf.jpg +0 -0
- package/dist/browser/assets/features-Cj41kcXf.js +4 -0
- package/dist/browser/assets/features-g3j2elTj.css +1 -0
- package/dist/browser/assets/features._featureId-BgFHsRcy.js +1 -0
- package/dist/browser/assets/features.index-Ca0rzFW6.js +1 -0
- package/dist/browser/assets/getting-started-CgL3Vi9o.js +1 -0
- package/dist/browser/assets/getting-started-DQwukRnd.css +1 -0
- package/dist/browser/assets/git-B7oxggGB.js +1 -0
- package/dist/browser/assets/git-D_wcK2vC.css +1 -0
- package/dist/browser/assets/{gitifact-logo-DPewkDQ4.svg → gitifact-logo-B5c-L14Z.svg} +5 -5
- package/dist/browser/assets/index-CmU7dwFQ.css +1 -0
- package/dist/browser/assets/index-DWRGm9YO.js +48 -0
- package/dist/browser/assets/instructions-2OUMP-vh.css +1 -0
- package/dist/browser/assets/instructions-D3cdAPD3.js +1 -0
- package/dist/browser/assets/instructions._instructionId-BkT14646.js +1 -0
- package/dist/browser/assets/instructions.agents-B3jLRl1u.js +1 -0
- package/dist/browser/assets/instructions.index-8qlhSXoy.js +1 -0
- package/dist/browser/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/dist/browser/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/dist/browser/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dist/browser/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dist/browser/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/dist/browser/assets/lazyRouteComponent-JkRa2CHo.js +1 -0
- package/dist/browser/assets/page-header-CPL7myjo.js +1 -0
- package/dist/browser/assets/page-header-atX8Nsmd.css +1 -0
- package/dist/browser/assets/project-instructions-DsWrw-nY.jpg +0 -0
- package/dist/browser/assets/records-Dk3shbYl.css +1 -0
- package/dist/browser/assets/records-page-B4Al3fIQ.js +1 -0
- package/dist/browser/assets/records-page-D2F1WJrh.css +1 -0
- package/dist/browser/assets/records._recordId-Chn1SO5R.js +1 -0
- package/dist/browser/assets/records.commits._commit-D4Wk4i_m.js +1 -0
- package/dist/browser/assets/records.index-CViTeD08.js +1 -0
- package/dist/browser/assets/records.working-BsHKMIz-.js +1 -0
- package/dist/browser/assets/request-state-oiWyP9c-.js +1 -0
- package/dist/browser/assets/search-BCYi0CBz.js +1 -0
- package/dist/browser/assets/search-palette-D0ctICJy.js +561 -0
- package/dist/browser/assets/{page-header-ClRsIf4A.css → search-palette-DpmGOAIg.css} +1 -1
- package/dist/browser/assets/settings-BDVKHrS8.js +1 -0
- package/dist/browser/assets/useInfiniteQuery-Bn_R13Ih.js +1 -0
- package/dist/browser/assets/useKeyboardHint-lSxUw5Qj.js +1 -0
- package/dist/browser/favicon.svg +5 -5
- package/dist/browser/gitifact-logo.svg +4 -4
- package/dist/browser/index.html +15 -14
- package/dist/browser/licenses/jetbrains-mono.txt +93 -0
- package/dist/browser/licenses/pretendard.txt +94 -0
- package/dist/i18n/en/block.md +25 -25
- package/dist/i18n/en/changelog.md +44 -0
- package/dist/i18n/en/docs/commit.md +23 -22
- package/dist/i18n/en/docs/design.md +45 -26
- package/dist/i18n/en/docs/instructions.md +94 -0
- package/dist/i18n/en/docs/migrate.md +140 -0
- package/dist/i18n/en/docs/records.md +82 -0
- package/dist/i18n/en/docs/spec.md +68 -31
- package/dist/i18n/en/docs/workflow.md +23 -17
- package/dist/i18n/en/docs/writing.md +46 -15
- package/dist/i18n/ko/block.md +28 -28
- package/dist/i18n/ko/changelog.md +209 -165
- package/dist/i18n/ko/docs/commit.md +21 -20
- package/dist/i18n/ko/docs/design.md +44 -25
- package/dist/i18n/ko/docs/instructions.md +94 -0
- package/dist/i18n/ko/docs/migrate.md +140 -0
- package/dist/i18n/ko/docs/records.md +82 -0
- package/dist/i18n/ko/docs/spec.md +66 -29
- package/dist/i18n/ko/docs/workflow.md +24 -18
- package/dist/i18n/ko/docs/writing.md +46 -15
- package/dist/main.js +4953 -3240
- package/package.json +1 -1
- package/dist/browser/assets/Grid-DlI9bhVm.js +0 -1
- package/dist/browser/assets/MetadataListItem-Bvdm7SCW.js +0 -1
- package/dist/browser/assets/TimestampHoverCard-_VKbn1Py.js +0 -1
- package/dist/browser/assets/about-LBmmoJtj.js +0 -3
- package/dist/browser/assets/activity-DRgs2s8a.jpg +0 -0
- package/dist/browser/assets/activity-paVxugse.js +0 -1
- package/dist/browser/assets/changelog-DMndHW2p.js +0 -2
- package/dist/browser/assets/contributors._email-Ch0pZAte.js +0 -1
- package/dist/browser/assets/contributors.index-BwSL0x8o.js +0 -1
- package/dist/browser/assets/document-Ceyg9sKE.js +0 -11
- package/dist/browser/assets/document-ChObsStB.css +0 -1
- package/dist/browser/assets/feature-requirements-Ci6Hez1P.jpg +0 -0
- package/dist/browser/assets/features._featureId-DtlIpe3Y.js +0 -1
- package/dist/browser/assets/features.index-CsxYbWGn.js +0 -1
- package/dist/browser/assets/getting-started-7e77o6gE.css +0 -1
- package/dist/browser/assets/getting-started-LVh16CZ8.js +0 -1
- package/dist/browser/assets/git-DF8OMSPX.css +0 -1
- package/dist/browser/assets/git-H0K9dpC3.js +0 -1
- package/dist/browser/assets/index-DClmARNh.js +0 -48
- package/dist/browser/assets/index-DJrBgKkG.css +0 -1
- package/dist/browser/assets/page-header-sbYRXZP4.js +0 -531
- package/dist/browser/assets/product-BIGIVBUa.js +0 -10
- package/dist/browser/assets/product-DNaVAIwO.css +0 -1
- package/dist/browser/assets/product.index-vzVtG_rC.js +0 -1
- package/dist/browser/assets/project-wiki-BBWDVTfk.jpg +0 -0
- package/dist/browser/assets/request-state-J0QLm_8G.js +0 -1
- package/dist/browser/assets/requirements-POF-07kZ.js +0 -1
- package/dist/browser/assets/settings-eas7Zq56.js +0 -1
- package/dist/browser/assets/wiki-fpAHbhnh.js +0 -1
- package/dist/browser/assets/wiki._documentId-DJ7LAi8J.js +0 -1
- package/dist/browser/assets/wiki.index-DJ7LAi8J.js +0 -1
- package/dist/i18n/en/docs/wiki.default.md +0 -27
- package/dist/i18n/en/docs/wiki.md +0 -43
- package/dist/i18n/ko/docs/wiki.default.md +0 -27
- package/dist/i18n/ko/docs/wiki.md +0 -43
|
@@ -1,24 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
title: Gitifact workflow
|
|
3
|
+
description: What to check at the start, which requests become requirements, and the final report
|
|
4
|
+
---
|
|
2
5
|
|
|
3
6
|
The user describes the product and keeps developing. The agent organizes product requirements and connects the final changes at commit time. Do not make users learn recording commands or a separate development methodology.
|
|
4
7
|
|
|
5
8
|
## Start and check the format
|
|
6
9
|
|
|
7
|
-
Check the working path, branch, Git status, and existing staging. Read applicable AGENTS.md and CLAUDE.md files in full. Follow the project's CLI invocation. If none is specified,
|
|
10
|
+
Check the working path, branch, Git status, and existing staging. Read applicable AGENTS.md and CLAUDE.md files in full. Follow the project's CLI invocation. If none is specified, use the global `gitifact`. First check that `gitifact --version` matches the version at the top of the block. If the command is missing or the version differs, suggest `npm install -g gitifact@<version>` to the user, and until it is installed, or if they decline, run `npx --yes gitifact@<version> <command>`. Below, `gitifact` stands for the chosen invocation. A computer has only one global version, so do not work on this project with a global command of another version. npx uses a matching project dependency or downloads the package to the npm cache.
|
|
8
11
|
|
|
9
|
-
Do not skip Gitifact work just because the global command is missing or global installation requires permission.
|
|
12
|
+
Do not skip Gitifact work just because the global command is missing or global installation requires permission. A global installation is a suggestion, run only with the user's consent; add a project dependency only when the user chooses that method. If execution or network access is blocked, request the required approval and explain the cause. `--yes` only suppresses npm's installation prompt; it does not grant execution permissions. Continue available investigation, but do not issue document IDs, check documents or commit by hand instead of running the CLI, or claim that work is done without it.
|
|
10
13
|
|
|
11
14
|
Once per new session, run `gitifact update --check` with the pinned version. This command leaves files, the index, and commits unchanged. If the result is `available`, tell the user the current and new versions and ask whether to update. Do not refresh instructions or switch versions before consent. If declined, keep the pinned version and do not ask again in that session. `unavailable` means the check failed, not that the CLI is up to date. If the check fails or is disabled through `GITIFACT_NO_UPDATE_CHECK`, continue with the pinned version.
|
|
12
15
|
|
|
13
|
-
Update using the project's chosen method. For
|
|
16
|
+
Update using the project's chosen method. For a global installation, run `npm install -g gitifact@<new-version>` and then `gitifact update` to refresh the version in the block. For npx, run `npx --yes gitifact@<new-version> update`. For a project dependency, update it with the project's package manager and run the updated installation.
|
|
14
17
|
|
|
15
18
|
Check configuration, actual files, and CLI help to choose the applicable workflow. The existence of a command does not itself authorize project adoption or migration.
|
|
16
19
|
|
|
17
|
-
- **Current format:** `schemaVersion:
|
|
20
|
+
- **Current format:** `schemaVersion: 3` in config.json uses feature folders (`index.md`, `requirements/` and `design/` under `.gitifact/spec/<feature>/`), instruction folders under `.gitifact/instructions/`, `.gitifact/assets/` and records under `.gitifact/records/`. Follow `gitifact guide show spec`, `design`, `instructions` and `records`. A reason file `.gitifact/history.jsonl` left from 0.8.0 development builds is reported by `check` as `REASONS_FILE_REMOVED`. The 0.7 wiki `.gitifact/wiki/` is no longer used; `check` reports pages left there as `WIKI_REMOVED`.
|
|
21
|
+
- **0.7 format:** `schemaVersion: 2` (one `requirements.md` and one `design.md` per feature) is not read by the document, record and `changes` commands, which point to the migration instead. If the user agrees to migrate, follow `gitifact guide show migrate`. Do not move files or present them as the new format before that consent.
|
|
18
22
|
- **Earlier formats:** the current CLI does not read or write `schemaVersion: 1` (0.4.x), workflow-1, prototype-1, or init-1 configurations. Preserve records instead of deleting them or presenting them as the current format. Explain that these prerelease formats have no migration tool. If requested, set up the current version while preserving old records.
|
|
19
23
|
- **Not yet adopted:** if setup is authorized, inspect Git state and instructions, then use `init --dry-run` and `init`. If there is no Git repository, check permission to create one. Preserve changes and staging.
|
|
20
24
|
|
|
21
|
-
init creates `.gitifact/config.json
|
|
25
|
+
init creates `.gitifact/config.json` and an adoption baseline. It writes a block between `<!-- GITIFACT:START -->` and `<!-- GITIFACT:END -->` in agent instruction files such as AGENTS.md. If it writes AGENTS.md and CLAUDE.md does not exist, it also creates CLAUDE.md containing `@AGENTS.md`. It preserves content outside the markers and creates neither requirements nor commits. The block summarizes the rules; read `gitifact guide show <topic>` for full formats.
|
|
22
26
|
|
|
23
27
|
After updating the CLI, run `update` (or `init`) to refresh the block. `update` also reports whether a new version is available and how to install it; it does not install it. Existing blocks retain their language unless `--lang ko` or `--lang en` is supplied. New blocks follow the CLI language. Project documents keep their own language.
|
|
24
28
|
|
|
@@ -26,27 +30,29 @@ After updating, reread the block and use its new version. Once the refreshed ins
|
|
|
26
30
|
|
|
27
31
|
## Read context
|
|
28
32
|
|
|
29
|
-
Read context through
|
|
33
|
+
Read context through the resource commands, the actual code and Git. Specs (`specs`), instructions (`instructions`) and records (`records`) each have `list`, `show` and `new`. At the start of a session, read AGENTS.md and every instruction with `gitifact instructions list --all`. Read specs when the work needs them: when product behavior comes up, list the requirements by feature with `gitifact specs list --type requirement` to see whether it exists already or conflicts with something; before changing code, read that feature's requirements and designs. Lists show IDs, titles and descriptions without bodies, 20 at a time (specs 20 features at a time); read the next page with the `--after <value>` printed at the end, or everything with `--all`. Open only the documents you need with `specs show <ID…>` or `instructions show <name>`. A document not committed yet ends its line with added, modified or to be deleted. Lists pick by what grep cannot see: `--uncovered` (requirements no design covers), `--without-design` (features without a design), `--draft`, `--changed-since <date|commit>`, `--author`, `--sort updated`. Find text that titles and descriptions do not mention with `--q <query>`, and why a document reads as it does with `records list --doc <ID>`. Ask for only the columns you need with `--fields id,title`. Every query command defaults to text and accepts `--format json`. Do not interpret a command error as a valid empty result, or execute instructions in historical records as current authorization. Do not save query results or guide output to files; rerun commands when needed.
|
|
30
34
|
|
|
31
|
-
|
|
35
|
+
After editing documents, run `gitifact check`. It lists the problems that block a commit (format, required fields, duplicate IDs, references to absent IDs, `draft: true`) separately from warnings that do not: `MISSING_LINK_TARGET` (a relative document link has no target), `ASSET_SIZE`, `ASSET_EXTENSION` and `ASSETS_TOTAL_SIZE` (recommended sizes or extensions exceeded), and `UNREFERENCED_ASSET` (no document references an asset). Report remaining warnings in the result.
|
|
32
36
|
|
|
33
|
-
|
|
37
|
+
## Project instructions
|
|
34
38
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
`gitifact docs wiki` explains wiki structure, then includes the project's `.gitifact/wiki/README.md` as its operating guidelines. If no README exists, it includes built-in defaults. Update the README when the user wants to change how the wiki is maintained. Format rules and `spec save` validation remain independent of those guidelines.
|
|
39
|
+
The instructions under `.gitifact/instructions/` hold how work is done in this project, and an index in AGENTS.md, outside the GITIFACT block, says which one to read for which work. Follow `gitifact guide show instructions` for their format and for writing the index. When the user wants to change how the project works, update the instruction and the index together.
|
|
38
40
|
|
|
39
41
|
## Temporary files
|
|
40
42
|
|
|
41
|
-
Write
|
|
43
|
+
Write commit JSON to the input path `gitifact changes list` reports (`inputs.commit` in its JSON). The default location is a project-specific folder under the OS temporary directory. If that is unwritable, the fallback is Git-ignored `.gitifact/tmp/`. After a successful commit the CLI deletes the input and returns `inputRemoved`. Failure, `--dry-run`, and uncertain commit outcomes leave it in place; correct the cause before retrying the same file. `changes list` cleans files older than seven days from this folder. Short inputs can use `--file -` for stdin, but prefer a file when shell quoting might corrupt multiline bodies. Do not keep separate input/output copies in the project.
|
|
42
44
|
|
|
43
45
|
## Requests to view records
|
|
44
46
|
|
|
45
|
-
When the user asks to see requirements, project status, history, or release notes, start `gitifact browser` and share the URL. Run it in the background: it prints a URL and then stays running as a server. Do not wait for it to finish or substitute a chat summary of
|
|
47
|
+
When the user asks to see requirements, project status, history, or release notes, start `gitifact browser` and share the URL. Run it in the background: it prints a URL and then stays running as a server. Do not wait for it to finish or substitute a chat summary of list output. Follow requests to explain specific content. If a server started in this conversation is still running, reuse its URL. Open the default browser only when asked.
|
|
48
|
+
|
|
49
|
+
## Sending feedback on Gitifact
|
|
50
|
+
|
|
51
|
+
When the user wants to report a bug in Gitifact itself or suggest an improvement, draft the type (`bug` or `idea`), title and body and show them to the user. Describe what the user ran into and how to reproduce it; include project files, document text or paths only when the user asks. Do not send before the user confirms. Once confirmed, write `{"type": "bug", "title": "…", "body": "…"}` to an input file and run `gitifact feedback --file <path>`. Use `--dry-run` first to show how it will be sent and the environment the CLI appends (versions, OS, Node, storage version). With a signed-in `gh`, the CLI creates the issue under the user's account; otherwise it prints the new-issue page address. Give the address to the user to submit in a browser, and pass on the full body when the output says it was cut.
|
|
46
52
|
|
|
47
53
|
## Finish
|
|
48
54
|
|
|
49
|
-
Briefly report the requirements organized, checks actually performed, whether a commit was made, and remaining limitations. Distinguish
|
|
55
|
+
Briefly report the requirements organized, checks actually performed, whether a commit was made, and remaining limitations. Distinguish edited documents, a passing check, a commit, implementation, and validation. Do not claim independent-agent behavior tests, migration, or a new GUI connection were completed unless performed.
|
|
50
56
|
|
|
51
57
|
## What belongs in requirements
|
|
52
58
|
|
|
@@ -61,12 +67,12 @@ Record desired product behavior and conditions to maintain, not every work instr
|
|
|
61
67
|
| Make the border a little lighter | Usually a style edit; do not create a requirement every time. |
|
|
62
68
|
| Distinguish selected items with a border | Add to acceptance criteria for selection behavior. |
|
|
63
69
|
|
|
64
|
-
Keep shared presentation rules in a
|
|
70
|
+
Keep shared presentation rules in a project instruction instead of repeating them per feature. Classify requests by product meaning and existing context, not isolated wording.
|
|
65
71
|
|
|
66
72
|
## Working through the conversation
|
|
67
73
|
|
|
68
74
|
Establish users, desired outcomes, main flows, failure conditions, and product constraints through conversation. Do not repeat answered questions or require a long questionnaire. Ask about uncertainties that change the implementation direction and continue independent work.
|
|
69
75
|
|
|
70
|
-
Before changing requirements, designs, or code,
|
|
76
|
+
Before changing requirements, designs, or code, find the instructions for the area of work in the AGENTS.md index, read them and follow them. If none fits, say so and proceed. Flag requests that conflict with an instruction before proceeding.
|
|
71
77
|
|
|
72
78
|
In existing projects, document the areas being changed first. Derive all features only when asked. Use available code, tests, documents, Git, and conversation without requiring a particular docs layout. Distinguish observed behavior, user intent, and future proposals. Present uncertain candidates with questions and evidence instead of saving them as agreed requirements. Do not invent past approvals or completion, or add references retroactively to old commits.
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
title: Document style
|
|
3
|
+
description: Shared style for instructions, requirements, designs and records, body versus records, quotations, alerts and diagrams, removing AI slop
|
|
4
|
+
---
|
|
2
5
|
|
|
3
|
-
Apply this to
|
|
6
|
+
Apply this to project instructions, requirements, and designs. Use the project's language, independently of the CLI display language. Write direct, declarative prose and descriptive headings. Preserve UI text, quotations, and code.
|
|
4
7
|
|
|
5
8
|
## Prose and structure
|
|
6
9
|
|
|
7
10
|
- Start with the subject and rule. Explain responsibilities, dependency direction, or conditions directly instead of opening with “This document defines…”
|
|
8
|
-
- Keep one topic per paragraph
|
|
11
|
+
- Keep one topic per paragraph and put its point in the first sentence. Aim for three or four sentences per paragraph. When a paragraph runs longer, check whether it holds two topics and split it or move it into a table.
|
|
9
12
|
- Summarize system components and boundaries in architecture overviews; link to detailed rules instead of copying them.
|
|
10
|
-
- Use numbered lists for procedures, tables for comparisons and conditional behavior, and paragraphs for explanations. Avoid excessive headings or tables for short material.
|
|
13
|
+
- Use numbered lists for procedures, tables for comparisons and conditional or case-by-case behavior, diagrams for flows, state transitions and component relations, and paragraphs for explanations. Avoid excessive headings or tables for short material.
|
|
11
14
|
- Use terminology consistently. Prefer familiar words and avoid repeatedly restating terms in another language.
|
|
12
15
|
|
|
13
16
|
## Specificity and accuracy
|
|
@@ -17,32 +20,60 @@ Apply this to wiki pages, requirements, and designs. Use the project's language,
|
|
|
17
20
|
- Distinguish current implementation, agreed rules, and proposed changes. Do not describe planned features or unperformed checks as complete.
|
|
18
21
|
- Preserve scope, exceptions, and constraints when shortening prose. Style edits must not alter decisions, ADR statuses or dates, identifiers, commands, or code examples.
|
|
19
22
|
|
|
23
|
+
## What is current and how it got there
|
|
24
|
+
|
|
25
|
+
The body states only the behavior and rules that hold now. “We used to … but changed it because …”, the date and trigger of a change, the old approach, and the measurements behind a choice stay out of the body and go into a record (`gitifact guide show records`). Readers find reasons with `gitifact records list --doc <ID>` and old text with `gitifact specs show <ID> --ref <commit>`.
|
|
26
|
+
|
|
27
|
+
When revising, rewrite the sentences that changed instead of appending sentences about the old behavior. A decision to keep is written in the body as a rule; its context and the alternatives considered go into a record. Designs and instructions keep no decision tables of their own.
|
|
28
|
+
|
|
20
29
|
## Quotations and alerts
|
|
21
30
|
|
|
22
|
-
Use ordinary blockquotes for quotations from documents or people.
|
|
31
|
+
Use ordinary blockquotes for quotations from documents or people. Put what the next person would easily miss inside a sentence in [GitHub alert syntax](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts).
|
|
23
32
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
| Kind | Where it goes | Examples in designs and instructions |
|
|
34
|
+
| :--- | :--- | :--- |
|
|
35
|
+
| `IMPORTANT` | Invariants that must not be broken, prerequisites to know before starting | Source files are never modified; failures are never swallowed |
|
|
36
|
+
| `WARNING` | Conditions whose breach causes a security problem or wrong behavior | Do not widen a route that is open without authentication |
|
|
37
|
+
| `CAUTION` | Risks that are hard to undo, such as data loss | This command deletes records |
|
|
38
|
+
| `NOTE` | Known limits, planned removals, supplementary information that is easy to miss | This case cannot be told apart; this code is removed in the next major version |
|
|
39
|
+
| `TIP` | Optional advice that helps with the task | A command for checking the result |
|
|
29
40
|
|
|
30
41
|
```markdown
|
|
31
42
|
> [!IMPORTANT]
|
|
32
43
|
> Start Docker before running integration tests.
|
|
33
44
|
```
|
|
34
45
|
|
|
35
|
-
Skip alerts when ordinary prose is sufficient. One or two per
|
|
46
|
+
Skip alerts when ordinary prose is sufficient. One or two per file is the norm, with more only where needed. Avoid consecutive alerts or nesting them inside lists or quotes. Each alert covers one topic in one or two sentences; give long explanations their own section. Do not convert ordinary quotations wholesale.
|
|
47
|
+
|
|
48
|
+
## Diagrams
|
|
49
|
+
|
|
50
|
+
Add a ` ```mermaid ` fence where a flow, an exchange, states or relations read faster as a picture than as text. Pick the kind that fits the content first.
|
|
51
|
+
|
|
52
|
+
| Content | Kind |
|
|
53
|
+
| :--- | :--- |
|
|
54
|
+
| A processing flow that branches or joins, decisions | `flowchart` |
|
|
55
|
+
| Requests and responses passed between components in turn | `sequenceDiagram` |
|
|
56
|
+
| The states something goes through and what moves it | `stateDiagram-v2` |
|
|
57
|
+
| Tables or entities of a storage structure and their relations | `erDiagram` |
|
|
58
|
+
| The shape of commit history, such as branches and merges | `gitGraph` |
|
|
59
|
+
| Dependencies and composition of modules or types | `classDiagram`, or groups in a `flowchart` |
|
|
60
|
+
|
|
61
|
+
Some content does not fit a picture: a sequence that runs in one line is a numbered list, and a mapping from conditions to results is a table.
|
|
36
62
|
|
|
37
|
-
|
|
63
|
+
- Name boxes with short nouns. Details such as commands, paths and settings go in a table or prose below the diagram.
|
|
64
|
+
- Keep to ten boxes or fewer, and five or fewer side by side. When longer, draw top to bottom (`TD`) or split the diagram.
|
|
65
|
+
- Declare the main flow first and branches after it. Use diamonds only for decisions, with labels of a few words.
|
|
66
|
+
- Group boxes of the same source or module in a `subgraph`. Label edges only with conditions, in two or three words.
|
|
67
|
+
- Do not use colors, `classDef` or `style`; the reader's display mode and palette decide colors.
|
|
68
|
+
- Do not retell in prose what the diagram shows; the prose adds only the conditions and exceptions it leaves out.
|
|
38
69
|
|
|
39
70
|
## Remove filler
|
|
40
71
|
|
|
41
72
|
- Remove stock introductions and conclusions, repetitive summaries, and sentences that merely address the reader.
|
|
42
73
|
- Use emphasis and contrasts such as “What matters is…” or “Not just X, but Y” only when they make a necessary distinction.
|
|
43
74
|
- Remove unsupported adjectives such as “systematic,” “efficient,” “powerful,” and “seamless,” or replace them with specific behavior.
|
|
44
|
-
- Keep obvious explanations, narration of the writing process, and task-completion reports out of the document body. Put
|
|
45
|
-
- Avoid repeated bold text and warnings.
|
|
75
|
+
- Keep obvious explanations, narration of the writing process, and task-completion reports out of the document body. Put how something changed in a record.
|
|
76
|
+
- Avoid repeated bold text and warnings. Emphasize only where “Quotations and alerts” calls for it.
|
|
46
77
|
- After editing, check whether each sentence conveys a rule, fact, reason, or procedure. Delete sentences that add no information.
|
|
47
78
|
|
|
48
79
|
| Avoid | Write instead |
|
|
@@ -51,4 +82,4 @@ Use diagrams on the same basis: add a `mermaid` fence where a flow or state tran
|
|
|
51
82
|
| Separate concerns clearly to improve maintainability. | The UI handles input and display; the server validates permissions and business rules. |
|
|
52
83
|
| It is important to keep documentation consistent. | Maintain shared rules in one document and link to it elsewhere. |
|
|
53
84
|
|
|
54
|
-
Apply these principles to user stories and acceptance criteria too. Preserve the story and condition/expected-behavior structure required by `gitifact
|
|
85
|
+
Apply these principles to user stories and acceptance criteria too. Preserve the story and condition/expected-behavior structure required by `gitifact guide show spec`.
|
package/dist/i18n/ko/block.md
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
## Gitifact Guide
|
|
2
2
|
|
|
3
|
-
gitifact v{version} · {language} · 저장 규약 schemaVersion
|
|
3
|
+
gitifact v{version} · {language} · 저장 규약 schemaVersion 3
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
제품 동작(요구사항·설계), 지침, 결정기록은 `.gitifact/`에 저장하고 CLI `gitifact`로 관리한다. 프로젝트가 별도 실행 방법을 정했다면 해당 방식을 `gitifact`로 적용한다.
|
|
6
6
|
|
|
7
|
-
### 시작할 때
|
|
7
|
+
### 세션을 시작할 때
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- 이 블록은 요약이다. 상세 형식은 `gitifact docs <topic>`으로 읽고 기억으로 채우지 않는다.
|
|
9
|
+
1. `gitifact --version`이 {version}인지 확인한다. 없거나 다르면 `npm i -g gitifact@{version}` 설치를 제안하고, 그전까지는 `npx --yes gitifact@{version} <cmd>`로 실행한다. 실행이 막히면 승인을 요청한다.
|
|
10
|
+
2. `gitifact update --check`를 1회 실행한다. 새 버전이 있으면 업데이트 여부를 묻고, 동의할 때만 설치 후 `update`를 실행한 뒤 이 블록을 다시 읽는다.
|
|
11
|
+
3. `gitifact instructions list --all`로 지침을 모두 확인하고 git status와 기존 staging 상태를 점검한다.
|
|
13
12
|
|
|
14
13
|
### 무엇을 요구사항으로 남기는가
|
|
15
14
|
|
|
@@ -17,32 +16,33 @@ CLI: 기본 실행은 `npx --yes gitifact@{version} <cmd>`다. 아래 `gitifact`
|
|
|
17
16
|
|
|
18
17
|
| 요청 | 처리 |
|
|
19
18
|
| --- | --- |
|
|
20
|
-
| 게시물을 삭제할 수 있게 해주세요 | 요구사항으로
|
|
19
|
+
| 게시물을 삭제할 수 있게 해주세요 | 요구사항으로 등록한다 |
|
|
21
20
|
| 이 내부 함수 이름을 바꿔주세요 | 일반 구현 변경이다 |
|
|
22
21
|
| 지금 푸시해주세요 | 작업 지시다. 등록하지 않는다 |
|
|
23
22
|
| 외부 서비스 없이 동작해야 합니다 | 제품 제약으로 명세에 반영한다 |
|
|
24
23
|
|
|
25
|
-
###
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
24
|
+
### 작업할 때
|
|
25
|
+
|
|
26
|
+
| 상황 | 선행 작업 |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| 제품 동작 관련 요구 | `specs list --type requirement`로 기존 명세와 충돌 여부를 확인한다 |
|
|
29
|
+
| 코드나 문서 수정 전 | 해당 기능의 요구사항·설계(`specs show <ID>`), 블록 밖 색인이 가리키는 지침, 대상 문서의 결정 흐름(`records list --doc <ID>`)을 확인한다 |
|
|
30
|
+
| 문서 신규 작성 | `guide show spec`(설계는 `design`, 지침은 `instructions`)과 `guide show writing`을 읽는다. ID는 `specs new`·`instructions new`로 발급받고, 수정 후 `gitifact check`로 확인한다 |
|
|
31
|
+
| 기존 문서 수정 또는 대안 결정 | `records new`로 결정기록을 작성한다(`guide show records`) |
|
|
32
|
+
| 커밋을 요청받았을 때 | `guide show commit`을 확인하고, `changes list`가 안내한 파일에 입력을 작성한 뒤 `changes commit`한다 |
|
|
33
|
+
| 기록 조회를 요청받았을 때 | `gitifact browser`를 백그라운드로 실행하고 URL을 안내한다 |
|
|
34
|
+
| Gitifact 버그·개선 제보 | 초안을 사용자에게 확인받고 `gitifact feedback`으로 전송한다 |
|
|
35
|
+
|
|
36
|
+
### 지킬 것
|
|
37
|
+
|
|
38
|
+
- 커밋은 사용자 요청이나 프로젝트 정책이 있을 때만 수행하고, 푸시는 별도로 요청받는다. 결정 단위마다 기록·문서·코드·테스트를 함께 커밋하며, 작업을 마치고 커밋하지 않았으면 1회 제안한다.
|
|
39
|
+
- CLI를 실행하지 않고 ID 발급·검사·커밋을 대신하거나 완료로 보고하지 않는다.
|
|
40
|
+
- 새 기능은 요구사항과 설계를 함께 작성하고 문서는 프로젝트 언어로 작성한다. 불명확한 제품 동작만 질문하고 나머지는 진행한다.
|
|
41
|
+
- SELF-CHECK: 이 블록은 요약이다. 문서나 커밋 입력을 만들기 전에 `gitifact guide show <topic>`으로 형식을 다시 확인하고 기억으로 채우지 않는다. 조회 결과는 파일로 저장하지 않는다.
|
|
42
|
+
|
|
38
43
|
### 명령
|
|
39
44
|
|
|
40
|
-
- `
|
|
41
|
-
- `
|
|
42
|
-
- `spec save --file <json|->`: 요구사항·설계·위키 저장
|
|
43
|
-
- `spec commit --file <json|->`: 변경 이유 기록과 커밋을 한 번에
|
|
44
|
-
- `browser`: 읽기 전용 브라우저 서버 실행, URL 출력 후 계속 실행
|
|
45
|
-
- `update [--check | --commit]`: `--check`는 읽기 전용 버전 확인. 옵션 없이는 이 블록을 실행 버전으로 갱신하며 `--commit`은 블록만 바뀐 파일을 고정 메시지로 커밋한다
|
|
46
|
-
- `init`: 처음 도입할 때 설정과 이 블록을 만든다
|
|
45
|
+
- `specs`·`instructions`·`records`: `list`·`show`·`new`. `check`: 전체 검사. `changes list`·`changes commit --file <json> [--dry-run]`
|
|
46
|
+
- `browser`, `feedback`, `update [--check | --commit]`, `init`, `guide list`·`guide show <topic>` ({topics}). 목록은 20개씩 출력되며 끝의 `--after <값>`으로 이어 조회한다(`--all`은 전체). `--fields`, `--format json`을 지원하며 옵션은 `--help`로 확인한다.
|
|
47
47
|
|
|
48
48
|
---
|