I was thinking more on how to have optional items with the related complexities.
It occured to me a more plausible way is to add to the recipe language a small number of verbs:
[helpful10]
[helpful20]
[helpful30]
If the item is present then that fixed number is added to the skill bonus for making an item (10, 20 or 30). Like [optional] if the helpful item isn't present you can still continue.
In the case of a possible net making variation to allow with Saami's planned tools and without it could be:
.Net. 8h /-30/
{Knife}
{Netting needle} [helpful20]
{Yarn} =900= [remove]
{Rocks} (
{Birch-bark} #0.3# [helpful10]
In this language if you have all the tool Saami was planning you have full skill.
If you none of them you are making a lower quality net with -30 skill adjustment. It is after all possible in real life to make a net without those.
In this example the netting needle is twice as helpful as having the birch-bark.
By using a finite set of numbers it should be possible to scan with the existing parsing of the item lines. A variable amount would be harder to program. This seems more possible.
I can think of other recipes where this could apply. Like with smithing have a second hammer is helpful but not critical. As the second hammer has a different shape there will be times it makes the output a little better.
Decorations could also have optional items that would give more chances of raising the output quality which in turn leads to a higher price when sold.