Project

silkedit

0.0
No release in over 3 years
A tool to quickly and easily edit savefiles for Hollow Knight / SilkSong.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 2.7
>= 13.3
>= 3.0

Runtime

>= 0.3.0
>= 1.1.0
>= 1.7.3
>= 5.3.1
>= 2.15.1
>= 1.18.10
>= 3.3.1
~> 0.4
>= 0.4.0
>= 3.2.1
 Project Readme

Silkedit

Silkedit is a tool that allows quick and easy editing of savefiles for Hollow Knight and Silksong.

It has built-in cheats, can zone the player to nearly any bench or spawn point in the game (such as spawning where you obtain a skill), can edit the enemy journal to quickly update all required kills, and can save and restore the state of savefiles to provide you with a much larger save capacity.

What's useful to note is that the game has a few seconds in between when you exit a game and when the main menu gets loaded during which you can apply cheats to your savefile. This means that you don't have to exit out of the game to reload your cheats - just quit to the main menu and run silkedit before it loads.

Basic usage:

# Either supply the savegame number directly...
silkedit -s 1 cheat max_health max_silk quill_purple

# ...or keep it in an environment variable
export SILKEDIT_SAVENUM=1
silkedit cheat max_health max_silk quill_purple

# Un-kill your character, even in Silk Soul Mode
silkedit cheat unkill

# List all cheats and zones
silkedit cheat -l
silkedit zone -l

# Spawn at a different point when reloading the game
silkedit zone terminus

# Analyze or edit your enemy kill records
# If you have a terminal emulator compatible with `imgcat`
# (such as iterm2), images of the enemies will also be displayed.
silkedit journal listall
silkedit journal listmissing
silkedit journal killsonly
silkedit journal complete

# Or load up a pre-defined savefile to any slot
silkedit permaload -n act3complete

All available commands:

$ silkedit -h
  backup         Backs up the savefile
  restore        Restore a backup to the savefile. Providing no parameters restores the latest backup.
  cheat          Applies one or more cheats to the selected savefile
  edit           Edit the savefile directly
  diff           Diffs the current savegame against the latest backup, a specified backup, or a different save
  journal        Manages the journal of enemy kills
  permasave      Saves a local copy of a game into the config to restore later.
  permaload      Restores a permasave into the slot
  unpack         Unpacks a save file or backup to JSON/YAML for manual editing
  repack         Packs the JSON/YAML to the savefile
  zone           Zones the character to a different respawn point
  mkzone         Adds a new spawn point to the library

Available cheats:

$ silkedit cheat -l
all_abilities
all_crest_unlocks
all_crests
all_eva_upgrades
all_fasttravel
all_fleas
all_maps
all_spells
all_tools
complete_mushroom_quest
easy_dice_game_win
easy_flea_games_win
give_consumables
give_farsight
max_everything
max_health
max_liquids
max_rosaries
max_shards
max_silk
max_tool_upgrades
max_weapon
quill_none
quill_purple
quill_red
quill_white
refresh
toggle_cloakless
toggle_flea_reveal
toggle_map_reveal
toggle_permadeath_mode
unkill
unlock_terminus_door

Available Spawn Points

Note: The act shown is the expected act in the game when you'd normally get there. In most cases, however, you can ignore it and spawn anywhere during any act. Notable exceptions are the flea games during Act 1/2, or fleatopia during act 3. These will cause glitches.

$ silkedit zone -l
Shortcuts:
     bonebottom        greymoor    blastedsteps             spa       fleatopia
          druid     halfwayhome       pinstress       highhalls       fleagames
         marrow         yarnaby     sinnersroad        terminus         surface
          docks        bellhart       bilewater       architect     weavenest_a
          sauna        bellhome    exhaustorgan         faypeak     weavenest_c
      farfields           widow           ducts       fleacamp1           abyss
     seamstress       shellwood         cogcore       fleacamp2
   huntersmarch       alchemist       songclave       fleacamp3

Zones:
Shortcut     Act Zone
               3 abyss.bell_fixed
               3 abyss.north
abyss          3 abyss.south
bellhome       2 bellhart.bellhome
bellhart       1 bellhart.bench
               1 bellhart.widow_bellshrine
widow          1 bellhart.widow_spawn
               2 bilewater.bilehaven
               2 bilewater.east
exhaustorgan   1 bilewater.exhaustorgan
bilewater      1 bilewater.station
pinstress      1 blastedsteps.pinstress
               1 blastedsteps.south
blastedsteps   1 blastedsteps.station
surface        3 bordercaves.bench
               2 choralchambers.center
               2 choralchambers.northwest
               2 choralchambers.southwest
spa            2 choralchambers.spa
cogcore        2 cogcore.bench
               2 cogcore.dancers_spawn
               2 cogcore.melodytowers_spawn
               3 cradle.destroyed
               2 cradle.lace_spawn
terminus       1 cradle.terminus
               3 deepdocks.bell_fixed
               1 deepdocks.bellshrine
               1 deepdocks.dash_spawn
docks          1 deepdocks.forgedaughter
               3 deepdocks.fromabyss
sauna          2 deepdocks.sauna
               1 deepdocks.upper
               3 farfields.act3area
               1 farfields.pilgrimsrest
seamstress     1 farfields.seamstress
               3 farfields.sprintmaster
farfields      1 farfields.station
               1 farfields.upperentrance
weavenest_c    1 farfields.weavenest_cindril
               2 fay.cave
               2 fay.climb
faypeak        2 fay.peak
               2 fay.shakra
               1 grandbellway.station
fleacamp3      2 grandgate.fleacamp_3
greymoor       1 greymoor.bellshrine
fleacamp2      1 greymoor.fleacamp_2
halfwayhome    1 greymoor.halfwayhome
               1 greymoor.reaper_crest_spawn
               1 greymoor.shakra
               1 greymoor.yarnaby_spawn
               2 highhalls.station
huntersmarch   1 huntersmarch.trappedbench
               2 karak.coraltower
               2 karak.east
               1 marrow.entrance
fleacamp1      1 marrow.fleacamp_1
               1 marrow.jail_pinchallenge
marrow         1 marrow.station_bellshrine
               2 memorium.default
               1 memory.needolin
bonebottom     1 mossgrove.bonebottom
               1 mossgrove.chapel
               3 mossgrove.chapel_inside
druid          1 mossgrove.druid
               1 mossgrove.gamestart_respawn
               1 mossgrove.mosshome
               3 mossgrove.shaman_crest_spawn
               1 mossgrove.silkspear_spawn
               1 mossgrove.wanderer_crest_spawn
               3 putrifiedducts.fleafestival
fleatopia      2 putrifiedducts.fleatopia
               2 putrifiedducts.huntress
ducts          2 putrifiedducts.station
               1 shellwood.center
               1 shellwood.clinggrip_respawn
               3 shellwood.nyleth_spawn
               2 shellwood.south
shellwood      1 shellwood.station_bellshrine
               1 shellwood.west
               2 shellwood.witch_crest_spawn
               1 sinnersroad.east
               1 sinnersroad.east_permadeathmode
sinnersroad    1 sinnersroad.west
               1 slab.east
               2 slab.firstsinner_spawn
               1 slab.nw_inside
               1 slab.nw_outside
               1 slab.station
               2 songclave.bellshrine
songclave      2 songclave.bench
architect      2 underworks.architect
               2 underworks.harpoon_spawn
               2 underworks.north_a
               2 underworks.north_b
               2 underworks.north_c
               2 underworks.west
               3 verdania.bench
               1 weavenest.atla_bench
               1 weavenest.atla_eva_spawn
               2 whisperingvaults.keeper
               2 whisperingvaults.south
               2 whiteward.default
               2 wispthicket.default
alchemist      1 wormways.alchemist
               2 wormways.sharpdart_spawn

Provided Permasaves:

$ silkedit permaload -l
standard_mode_complete
silksoul_mode_complete
act3complete
act2complete
act1complete
act1speedrun
act2_pre_lace_and_witch
cursed_mother_kill
act3start

Example journal update (without images):

It asks for confirmation for any mob which has less than 10 required kills, as many of those have only a fixed number in game and not everyone may want to update them.

$ silkedit journal complete
(...)
  Great Conchfly              Seen? Y Kills:    1 Needed:    2 Left:    1
    Set Great Conchfly kills from 1 to 2? (y/n): n
* Roachfeeder                 Seen? Y Kills:   20 Needed:   20 Left:    0
    Already Completed.
* Roachkeeper                 Seen? Y Kills:   10 Needed:   10 Left:    0
    Already Completed.
  Last Judge                  Seen? N Kills:    0 Needed:    1 Left:    1
    Added to journal.
  Underpoke                   Seen? N Kills:    0 Needed:   25 Left:   25
(...)

Installation

Silkedit is available on rubygems, and should work cross-platform. I don't own an x86 Windows system to test it but if you have one and find that it doesn't work, feel free to submit a bug report or pull request!

gem install silkedit

If you don't already have ruby on your system, you will need to install it.

Windows

https://rubyinstaller.org/downloads/

MacOS

# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install rbenv
brew install rbenv
# Install ruby
rbenv install "$(rbenv install -l | grep -v - | tail -1)"

Linux

https://github.com/rbenv/rbenv?tab=readme-ov-file#using-package-managers

If you already have ruby on your system, just run:

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/akhoury6/silkedit. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

Code of Conduct

Everyone interacting in the Silkedit project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.