I bet there’s probably a set of implementation tips somewhere already. Maybe the IF Wiki, or somebody’s blog?
On the chance that there isn’t, or on the chance that there’s still more to add, here’s a start. If anybody has more to add, I’ll update this post with it. If possible, I’d like to avoid the more subjective suggestions – the things that are more of a personal preference nature than an actual problem in implementation. I’ve avoided adding “beta-testing” as a line item, since that’s more for finding implementation problems rather than an implementation problem itself.
Try to avoid restricting actions that are nearly synonymous with the one you intended.
As an example, suppose there’s a book on a shelf, and by “pulling” it, a secret door will open. If the player pushes it, you need to say something other than just “it won’t move.” If the player tries to “get” it, that implies pulling. Don’t say “it’s fixed in place.” If the player tries to “move” it, same thing. Otherwise, you’re purposely building a guess-the-verb puzzle, and these rarely work. Many players will give up, believing that they’re not even trying the right thing. If you feel like a specific phrasing is really needed and other likely phrasings must be prevented, try re-thinking the puzzle, or at a minimum, allowing the wrong attempts to hint at the right one.
Use synonyms for everything
This can be tough when different regions or countries use words for things that other regions don’t, so it’s worth asking beta-testers to be on the lookout for those things in particular. Even aside from that, sometimes I just want to use the shortest word possible, or the one I tend to use casually for describing the same thing. If there is an “automobile” in your game, please be sure it can be called a “car” or a “truck” or whatever the case may be. Definitely allow synonyms for every noun you use to describe it in your text. But any others that come to mind as well. It isn’t fun to have to keep re-looking at a description to figure out what the author called something that you already know is there.
Add adjectives for everything
If you have a “big green cube” in your game, which when looked at says “the large cube is a dark viridian” then you need adjectives for big, green, large, dark, and viridian. This is especially important for disambiguation. You must have unique adjectives for every item that is both (a) something you can pick up and take with you, and (b) has a noun in common with any other item in the game, including other inventory items. Or more briefly, every item that can be in the same scope (probably the same room) as another item of the same name. Otherwise, you make it difficult or impossible for players to choose between them.