featkpr
Private demo

What a mechanic is, shown on one BookStack book.

A mechanic is the kind of action behind something an app lets you do, named in plain words, the same way in every app featkpr reads. Creating a book and creating a shelf in BookStack are one mechanic: “Makes a new one”.

One book, button by button #

BookStack's page for one book, as featkpr's crawl captured it. Each lettered button is a goal featkpr keeps, and each goal gets its mechanic: what the action does to the book, in words that do not depend on what BookStack calls the button.

BookStack's page for one book: the Actions column with Edit, Sort, Copy, Permissions, Delete, Watch, Favourite and Export, lettered A to E on the five this page explains
/books/{slug} · BookStack, as the crawl captured it
  1. Edit Changes it

    Likely Update the book

    what its mechanic says to check As someone allowed: the book's fields change. As someone who may not: refused, and nothing changes.

  2. Sort Changes the order

    From the code Sort the book

    what its mechanic says to check As someone allowed: the chapters and pages change order. As someone who may not: refused, the order stays.

  3. Copy Makes a copy of it

    A guess Open the book (show copy)

    what its mechanic says to check A second book appears, and the first is left as it was.

  4. Delete Moves it to the bin

    From the code Delete the book

    what its mechanic says to check As someone allowed: the book leaves the shelf and waits in the recycle bin, where it can be brought back. As someone who may not: refused, the book stays.

  5. Export Downloads it as a file

    From the code 5 goals, one per format: html, markdown, pdf, plain text, zip

    what its mechanic says to check As someone allowed: a file in the chosen format. As someone who may not: refused, no file.

The buttons without a letter act on other things, or on who may see the book: New Page, New Chapter, Permissions, Watch and Favourite. Whatever featkpr keeps for them is on BookStack's mechanics page.

The Delete button does not delete #

BookStack's code moves a deleted book to a recycle bin. featkpr reads that from the code, so the mechanic is “Moves it to the bin”, whatever the button says. Three mechanics make the bin together: in, back out, and gone for good.

on the shelf
in the bin

Deletes it for good 2 goals

gone

Brings it back 2 goals, from the bin to the shelf

From the codeLikelyA guesshow sure featkpr is of each goal's mechanic

Where the mechanic shows in featkpr #

Every goal's page in featkpr says what the goal does, and how sure featkpr is. The app labels the line “What it does”: on this site, that is the mechanic.

featkpr's page for the goal Delete the book: What it does: Moves it to the bin, From the code, and a drawing of the book going from present through trash to trashed
the goal “Delete the book” in featkpr, on recorded sample data. “What it does: Moves it to the bin” is its mechanic, from the code, and the drawing shows the move: present, trash, trashed.

How sure, said on every goal #

featkpr says where each mechanic comes from. A guess is shown, but it never picks a test or lets featkpr write to the app until you or the code settle it. Anyone who owns the app can answer “Not right?” to correct one.

How a goal's tests are then proven, by sending each one again as a user who must be refused, is in BookStack's run report.

What it does: Moves it to the bin, From the code
From the code: the code says what the action does to the data.
What it does: Changes it, A guess
A guess: the name could mean more than one thing.

two goals in featkpr, on recorded sample data; the app's label “What it does” is the mechanic

The whole list, two apps side by side #

Every mechanic in its family, with how many goals each app has under it. Mechanics are few and the same for every app, so a long app means bigger counts, never new rows. A dash means featkpr has found no goal for that mechanic in that app yet.

Family, then each mechanic BookStack 165 goals · crawled 25 Sep 2026 · store seq 481521 Immich 154 goals · crawled 2 to 9 Oct 2026 · store seq 468538
Make or remove 39goals 58goals
Makes a new one 1319
Makes a copy of it 41
Deletes it for good 1531
Moves it to the bin 52
Brings it back 24
Puts it away, still readable –1
Change 22goals 43goals
Changes it 1630
Moves it somewhere else 4–
Changes the order 2–
Joins or splits them –2
Turns it on or off –6
Moves it to its next step –5
Connect – 17goals
Connects it to another one –7
Disconnects it from another one –7
Gives it to someone –2
Lets someone else see it –1
Lets someone do more ––
Look and find 78goals 13goals
Shows it 443
Finds the matching ones 15
Downloads it as a file 33–
Checks that it is right –4
Builds a result from what is there –1
Bring in or send 4goals 5goals
Brings rows in from a file 32
Sends a message –1
Starts a job 12
Notes down what happened ––
People and access 22goals 18goals
Signs you in 15
Signs you out –3
Makes a new account 21
Sets a password or key 116
Changes a setting 52
Adds a comment or reaction 31
Amounts – –
Sets an amount aside ––
Moves an amount from one to another ––
How sure featkpr is of each goal's mechanic From the code57Likely51A guess57From the code39Likely64A guess51

What works today, and what does not yet #

Works today

Named per goalevery goal featkpr keeps gets a mechanic from its code and its address, in production since 15 Oct
How sure, shownfrom the code, likely or a guess, on every goal's page
You can correct itan owner's answer to “Not right?” wins until the goal changes

Not yet

Tests chosen by mechanicthe mechanic says what to check; writing each test from it is being built
More apps' pagesan app gets its page here once a crawl has walked its screens

See your own app's mechanics #

On the call we walk BookStack's goals and what each one does, then talk about yours. Tim replies by hand.

Ask for a private demo

↑ ↓ to move, Enter to open, Esc to close