Walkthrough
Starting with an empty command
Give the project a runnable starting point before adding a language.
The first step is a command that can be built and run. Its entire entry point
lives in cmd/sew/main.go:
package main
// main is the entry point for the sew command.
func main() {}
Why start here?
This establishes a small baseline: Go can build the executable, and running it exits successfully without output. There is no file discovery, parser, or task execution to explain at the same time.
Keeping each change small makes it easier to connect a decision to the code that implements it. The repository's history can then tell the story of how the tool develops.
Keep the entry point small
The entry point belongs to the command. Parsing and execution can get their own packages when there is enough code to justify them. An empty program does not need that structure in advance.
The current command lives under cmd/sew, so its package path includes that
directory. That organization is a choice we can revisit as the project grows.
What comes next?
The next steps are to read a Sewfile, describe what happens when it is missing or empty, and then introduce one piece of syntax. Each step should make one new behavior observable.
The first rule describes that initial parsing milestone.