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-nameis automatically partofREQ-name(if "name" is the same)TST-nameis automatically partofSPC-name(if "name" is the same)RSKis not automatically linked to other types.SPC-name-foois automatically partofSPC-name(same prefix) andSPC-namewill 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);
}