Here is an ultra rough overview of the tool for those already familiar with it:
An example repository you can play around with is here: https://github.com/vitiral/artifact-example
- Installation Guide
- FAQ: frequently asked questions about artifact
- Best Practices: artifact best practices
- Vocabulary: useful vocabulary for writing design documents
- Simple Quality: short book which is the primary tutorial for this tool while also teaching quality best practices
- initialize repo:
art init
- list/filter artifacts:
art ls
- export a static webpage
art export html
- check for errors:
art check
- format design docs:
art fmt
- get help:
art [subcommand] -h
Artifact tracks "artifacts", which are objects which have a name, some text and can be linked to other artifacts and to source code.
There are four types of artifact:
REQ
: requirement, why your application existsRSK
: risk of a requirement, what you are concerned aboutSPC
: specification of a requirement or higher-level spec. How you will build your programTST
: details of what to test for a RSK or SPC
[REQ-name]
partof = REQ-other
text = '''
This is the description of the requirement
'''
- name looks like:
[REQ-name]
- link them like:
partof = "REQ-[name, other, nested-[more, link]]"
- note: same as
partof = "REQ-name, REQ-other, REQ-nested-more, REQ-nested-link"
- note: same as
SPC-name
is automatically partofREQ-name
(if "name" is the same)TST-name
is automatically partofSPC-name
(if "name" is the same)RSK
is not automatically linked to other types.SPC-name-foo
is automatically partofSPC-name
(same prefix) andSPC-name
will be created if it doesn't exist.
After art init
settings are in: .art/settings.toml
Settings:
artifact_paths
: paths to design doc folderscode_paths
: paths to source code to linkexclude_code_paths
: paths of directories to exclude
Writing #SPC-name
anywhere in any valid utf-8 file will mark SPC-name
as done.
Example:
// This is a comment about a function
// #SPC-name
fn get_name(raw: &str) -> String {
return process_name(raw);
}