Registries

breeds.txt, objects.txt, stashes, piles, memory, journal, and every registered name.

Names the parser hears. Spaces in stories map to underscores (cookie jarcookie_jar).

RegistryFileStory exampleScript name
Breedsbreeds.txtlabrador, golden retrieversame (spaces become _)
Objectsobjects.txtball, 5 ballsball
Stashesstashes.txther cookie jarcookie_jar
Pilespiles.txtthe laundry basketlaundry_basket
Memory(built-in)memorywhole number
Journal(built-in)journaltext

Use bark --list-breeds and bark --list-objects to print names from the CLI. Lists below match the shipped resource files.

Why names are registry-bound

Bark is a dog-themed story language, not a general-purpose scripting language. Breeds, objects, stashes, and piles must appear in the resource files before the parser treats them as real names.

If you write…What happens
I have a labrador.Works: labrador is in breeds.txt
I have a poodle mix.Fails or warns: poodle_mix is not registered unless you add it
her cookie jar holds "biscuit"Works: cookie_jar is in stashes.txt
her snack tin holds "bit"Fails: invent a stash in stashes.txt first

This is intentional. The registry keeps stories grounded in a shared dog world. For quick experiments use script mode with registry names.

Adding names: edit the .txt files (and optionally traits.json for breeds), rebuild, run.

Not planned: user-defined variables for breed/object names, import, or runtime registration.

Story variables

Two program-wide variables for story authors. Not a general variable system:

  • memory: whole number. Grammar: Story variables.
  • journal: text. Same assign/print glue as memory.

Breeds (breeds.txt)

In stories, spaces become underscores (golden retrievergolden_retriever). Only breeds in this list can appear in scripts.

affenpinscher, afghan_hound, airedale_terrier, akita, alaskan_malamute,
american_bulldog, american_eskimo_dog, american_foxhound, american_pit_bull_terrier,
american_staffordshire_terrier, anatolian_shepherd, australian_cattle_dog, australian_shepherd,
australian_terrier, basenji, basset_hound, beagle, bearded_collie, bedlington_terrier,
belgian_malinois, belgian_sheepdog, belgian_tervuren, bernese_mountain_dog, bichon_frise,
bloodhound, bluetick_coonhound, border_collie, border_terrier, borzoi, boston_terrier,
bouvier_des_flandres, boxer, briard, brittany, brussels_griffon, bull_terrier, bulldog,
bullmastiff, cairn_terrier, canaan_dog, cane_corso, cavalier_king_charles_spaniel,
chesapeake_bay_retriever, chihuahua, chinese_crested, chinese_shar_pei, chow_chow,
clumber_spaniel, cockapoo, cocker_spaniel, collie, coonhound, corgi, dachshund, dalmatian,
dandie_dinmont_terrier, doberman_pinscher, dogo_argentino, dogue_de_bordeaux,
english_cocker_spaniel, english_foxhound, english_setter, english_springer_spaniel,
english_toy_spaniel, entlebucher_mountain_dog, eurasier, field_spaniel, finnish_lapphund,
finnish_spitz, flat_coated_retriever, fox_terrier, french_bulldog, german_pinscher,
german_shepherd, german_shorthaired_pointer, german_wirehaired_pointer, giant_schnauzer,
glen_of_imaal_terrier, golden_retriever, gordon_setter, great_dane, great_pyrenees,
greater_swiss_mountain_dog, greyhound, harrier, havanese, husky, ibizan_hound,
icelandic_sheepdog, irish_setter, irish_terrier, irish_water_spaniel, irish_wolfhound,
italian_greyhound, jack_russell_terrier, japanese_chin, keeshond, kerry_blue_terrier,
komondor, kuvasz, labrador, labrador_retriever, lagotto_romagnolo, lakeland_terrier,
leonberger, lhasa_apso, lowchen, maltese, manchester_terrier, mastiff,
miniature_bull_terrier, miniature_pinscher, miniature_schnauzer, neapolitan_mastiff,
newfoundland, norfolk_terrier, norwegian_buhund, norwegian_elkhound, norwegian_lundehund,
norwich_terrier, nova_scotia_duck_tolling_retriever, old_english_sheepdog, otterhound,
papillon, parson_russell_terrier, pekingese, pembroke_welsh_corgi,
petite_basset_griffon_vendeen, pharaoh_hound, plott_hound, pointer,
polish_lowland_sheepdog, pomeranian, poodle, portuguese_water_dog, pug, puli, pumi,
pyrenean_shepherd, rat_terrier, redbone_coonhound, rhodesian_ridgeback, rottweiler,
russell_terrier, saint_bernard, saluki, samoyed, schipperke, scottish_deerhound,
scottish_terrier, sealyham_terrier, shetland_sheepdog, shiba_inu, shih_tzu,
siberian_husky, silky_terrier, skye_terrier, sloughi, smooth_fox_terrier,
soft_coated_wheaten_terrier, spanish_water_dog, spinone_italiano,
staffordshire_bull_terrier, standard_schnauzer, sussex_spaniel, swedish_vallhund,
tibetan_mastiff, tibetan_spaniel, tibetan_terrier, toy_fox_terrier,
treeing_walker_coonhound, vizsla, weimaraner, welsh_springer_spaniel, welsh_terrier,
west_highland_white_terrier, whippet, wire_fox_terrier, wirehaired_pointing_griffon,
wirehaired_vizsla, xoloitzcuintli, yorkshire_terrier

182 breeds total.

Objects (objects.txt)

World counters like ball 5 and I bark ball only work for names in this file.

Use feed/eat verbs for food (treat, snack, cookie, …) and find/lose verbs for items (toy, ball, …). They update separate counters on the dog.

ball, bone, bowl, biscuit, cookie, frisbee, orange, leash, snack, squeaky_toy,
stick, tennis_ball, sweets, sweet, slippers, toy_box

Object aliases include ballsball, cookiescookie, biscuitsbiscuit, snackssnack.

Print a global object count: bark ballVariable(ball).

Stashes (stashes.txt)

Story phrases like her cookie jar map to registry names (cookie_jar).

cookie_jar, toy_basket, toy_box, treat_jar, treat_pouch, treat_bag, walk_bag,
snack_drawer, biscuit_tin, chew_toy_bin, under_the_couch, dog_crate, scraps

Piles (piles.txt)

Story phrases like the laundry basket map to registry names (laundry_basket).

laundry_basket, plate_stack, pillow_heap, shoe_pile, newspaper_stack

Default traits (traits.json)

Breeds listed here get default traits at registration. Other breeds in breeds.txt work fine but start with no traits until you assign them in the story (my corgi is loud) or add an entry. Full table: Traits.

Traits should reflect real breed tendencies in a playful, stereotype-y way. I didn't add it for all dogs and I might expand upon this further in a later version if people like it.