Sims4UICheats

Sims 4 skill cheats, read out of the game's own command table

Press Ctrl+Shift+C, enter testingcheats true, then stats.set_skill_level <skill> <level>. The game matches the skill argument against the skill's internal tuning name rather than the label in the skill panel, and any fragment that matches a single skill is enough.

Verified against game build 1.126.73.1030
Syntax of the stats.set_skill_level cheatThe command stats.set_skill_level takes 3 arguments: stat_type, level, opt_sim. Read from server_commands.statistic_commands line 361.How to read stats.set_skill_levelEvery skill cheat is this one command. Theskill name is the game’s internal name, notthe label on the panel.stats.set_skill_levelMajor_Logic10<opt_sim>the command namestat_type · requiredlevel · optionalopt_sim · optionalRead from server_commands.statistic_commands line361, game build 1.126.73.1030.
A dashed outline means the argument has a default, so you can leave it off.

A skill in The Sims 4 is a statistic on the Sim with a level ladder attached, and one console command writes to it. The game declares 67 skill and aspiration commands in build 1.126.73.1030. 41 of them register in a retail build and 34 of those run for a player; the other 26 are DebugOnly and never register at all, which does not stop most cheat lists printing them.

Turn testingcheats on first

The console opens with Ctrl+Shift+C on PC and on Mac. On PlayStation and Xbox, EA documents holding all four shoulder buttons at once, and notes that a USB keyboard plugged into a console still uses Ctrl+Shift+C.

Then enter testingcheats true. Every command below marked Cheat is refused until it has been entered, and the gate resets when you return to the main menu or load a different save. That single line is the reason most skill cheats "do not work".

The cost is achievements. EA states that the cheat codes requiring testingcheats true disable achievements and trophies in the save you are playing, with build mode cheats as the exception and other saves left alone (EA, Sims 4 cheats FAQ).

The command that sets a skill

stats.set_skill_level<skill> <level> <opt_sim> · Cheat group · sets a named skill to a level · server_commands.statistic_commands:361

Three arguments, typed with spaces and no angle brackets: the skill, the level, and optionally the Sim. Leave the third off and it applies to the Sim you have selected.

The skill argument is a substring, not a name you have to know

The first parameter is declared as TunableInstanceParam(Types.STATISTIC) with no exact-match flag. That factory takes a parameter the game itself calls name_substring_or_id and hands it to get_tunable_instance, which lower-cases the input and compares it against the names of every statistic the instance manager has loaded (server_commands.argument_helpers:499, :531, :536).

Three things follow from that.

  • You do not need the full internal name. A fragment that matches exactly one loaded skill resolves.
  • A fragment matching several skills is refused, and the refusal is assembled by sorting the matching names and joining them into the message. The candidate list is built from your install rather than from a cheat site.
  • Only skills whose tuning is actually loaded can match, so the set you can address is exactly the set your installed packs registered.

All of that comes from reading the resolver, not from a session transcript. The extraction proves the matching rule and the message the resolver builds. Whether your console prints that message word for word is a runtime question this page has not tested.

Skill names versus stat names

stats.set_stat and its alias stats.set_commodity use the same parameter type with exact_match=True (server_commands.statistic_commands:173). Those two want the exact tuning name. stats.set_skill_level does not. The three are not interchangeable: a fragment the skill command accepts will be refused by the other two.

The 34 skill and aspiration cheats that run in a retail game

14 are registered in the Cheat group, which means testingcheats has to be on. 20 are Live, which is the group the game's own interface calls into; they are reachable but most of them take internal IDs rather than anything memorable. Click a command to copy it.

34 of 34 commands shown

CommandArgumentsGroupPackRegistered at
aspirations.complete_aspiration<aspiration_type> <opt_sim>CheatBase gameserver_commands.aspiration_commands:50
aspirations.complete_current_milestone — Completes the current aspiration milestone.<opt_sim>CheatBase gameserver_commands.aspiration_commands:69
aspirations.complete_objective<objective> <opt_sim>CheatBase gameserver_commands.aspiration_commands:96
stats.disable_all_commodities<opt_sim>CheatBase gameserver_commands.statistic_commands:768
stats.disable_autosatisfy_curvesnoneCheatBase gameserver_commands.statistic_commands:795
stats.disable_commodities<opt_sim> <*stat_types>CheatBase gameserver_commands.statistic_commands:753
stats.enable_all_commodities<opt_sim>CheatBase gameserver_commands.statistic_commands:705
stats.enable_autosatisfy_curvesnoneCheatBase gameserver_commands.statistic_commands:786
stats.enable_commodities<opt_sim> <*stat_types>CheatBase gameserver_commands.statistic_commands:685
stats.fill_commodities<opt_sim> <visible_only>CheatBase gameserver_commands.statistic_commands:137
stats.fill_commodities_household<visible_only>CheatBase gameserver_commands.statistic_commands:151
stats.set_commodity<stat_type> <value> <opt_sim> <opt_target_type>CheatBase gameserver_commands.statistic_commands:173
stats.set_skill_level — Sets a named skill to a level.<stat_type> <level> <opt_sim>CheatBase gameserver_commands.statistic_commands:361
stats.set_stat<stat_type> <value> <opt_sim> <opt_target_type>CheatBase gameserver_commands.statistic_commands:173
aspirations.activate_timed_aspiration<aspiration_type> <opt_sim>LiveBase gameserver_commands.aspiration_commands:189
aspirations.activate_timed_aspiration_from_suggested_aspiration<aspiration_type> <opt_sim>LiveBase gameserver_commands.aspiration_commands:172
aspirations.add_aspiration_to_suggested_aspirations<aspiration_type> <opt_sim>LiveBase gameserver_commands.aspiration_commands:142
aspirations.deactivate_timed_aspiration<aspiration_id> <opt_sim>LiveBase gameserver_commands.aspiration_commands:199
aspirations.get_childhood_inspiration_complete_state<opt_sim>LiveBase gameserver_commands.aspiration_commands:255
aspirations.remove_aspiration_from_suggested_aspirations<aspiration_type> <opt_sim>LiveBase gameserver_commands.aspiration_commands:154
notebook.clear_notebook_btn_tooltip<sim_id>LiveBase gamenotebook.notebook_commands:46
notebook.generate_notebook<opt_sim> <initial_category> <initial_subcategory>LiveBase gamenotebook.notebook_commands:15
notebook.hide_category<sim> <category_id>LiveBase gamenotebook.notebook_commands:124
notebook.mark_entry_as_seen<sim> <subcategory_id> <entry_id>LiveBase gamenotebook.notebook_commands:29
notebook.save_notebook_btn_tooltip<sim_id> <tooltip>LiveBase gamenotebook.notebook_commands:65
notebook.save_notes<sim_id> <text>LiveBase gamenotebook.notebook_commands:86
notebook.send_notebook_btn_update<sim_id>LiveBase gamenotebook.notebook_commands:105
stats.get_reincarnation_count<opt_sim>LiveBase gameserver_commands.statistic_commands:938
stats.horse_value_update<opt_sim>LiveBase gameserver_commands.statistic_commands:923
stats.publish_ranked_stat_progress<opt_sim> <stat_type>LiveBase gameserver_commands.statistic_commands:803
stats.remove_modifier<stat_type> <level> <opt_sim>LiveBase gameserver_commands.statistic_commands:325
stats.set_modifier<stat_type> <level> <opt_sim>LiveBase gameserver_commands.statistic_commands:306
stats.set_rank<opt_sim> <stat_type> <rank>LiveBase gameserver_commands.statistic_commands:825
stats.solve_motive<stat_type> <opt_sim>LiveBase gameserver_commands.statistic_commands:440

Two of the 34 carry an effect line, printed next to the command name, and both are our own sentences. The game registers a name and arguments and says nothing about the outcome, for those two or for any other command, so where there is no such line this page says nothing either.

The 33 a player cannot run

The command decorator's default group is DebugOnly, and a DebugOnly command never reaches register() in a shipped build (sims4.commands:332). Automation commands do register, but they are driven through the automation channel rather than the console. 26 of the 33 below are DebugOnly and 7 are Automation. They are transcribed onto cheat lists anyway, which is why so many "skill cheats" produce nothing but a blank line.

CommandArgumentsGroupWhy it does not runRegistered at
aspirations.get_active_aspiration<opt_sim>Automationregisters, but on the automation channelserver_commands.aspiration_commands:228
stats.get_rank<opt_sim> <stat_type>Automationregisters, but on the automation channelserver_commands.statistic_commands:854
stats.set_all_skills_max<opt_sim>Automationregisters, but on the automation channelserver_commands.statistic_commands:382
stats.set_lot_level_stat<stat_type> <value> <level>Automationregisters, but on the automation channelserver_commands.statistic_commands:204
stats.show_all_statistics<opt_sim>Automationregisters, but on the automation channelserver_commands.statistic_commands:95
stats.show_commodities<opt_sim> <output_to_automation>Automationregisters, but on the automation channelserver_commands.statistic_commands:46
stats.show_stats<display_skill_only> <opt_sim> <output_to_automation>Automationregisters, but on the automation channelserver_commands.statistic_commands:34
aspirations.list_all_aspirationsnoneDebugOnlynever reaches register() in a shipped buildserver_commands.aspiration_commands:40
aspirations.print_unfinished_business_objective_info<opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.aspiration_commands:211
aspirations.reset_data<opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.aspiration_commands:27
stats.add_commodity_to_tracker<stat_type> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:254
stats.add_stat_to_tracker<stat_type> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:254
stats.add_static_commodity_to_tracker<static_commodity> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:282
stats.add_to_commodity<stat_type> <value> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:241
stats.add_to_stat<stat_type> <value> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:241
stats.clear_skill<opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:415
stats.count_commoditiesnoneDebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:875
stats.fill_all_sim_commodities_except<stat_type> <opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:654
stats.perform_end_of_day_behavior<opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:905
stats.randomize_motives<min_value> <max_value> <opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:509
stats.remove_commodity<stat_type> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:269
stats.remove_stat<stat_type> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:269
stats.remove_static_commodity_from_tracker<static_commodity> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:294
stats.reset_convergence<stat_type> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:545
stats.reset_daily_cap<opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:894
stats.set_all_sim_commodities_best_value_except<stat_type> <opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:654
stats.set_commodity_best_value<stat_type> <opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:638
stats.set_commodity_percent<stat_type> <value> <opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:598
stats.set_convergence<stat_type> <convergence> <opt_target>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:532
stats.set_ranked_commodity_percent_of_current_rank<stat_type> <value> <opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:618
stats.show_change<stat_type> <opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:106
stats.show_static_commodities<opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:64
stats.tank_commodities<opt_sim>DebugOnlynever reaches register() in a shipped buildserver_commands.statistic_commands:165

Two of those matter more than the rest, because they are what people reach for when they want every skill at once. stats.set_all_skills_max is registered in the Automation group (server_commands.statistic_commands:382). stats.clear_skill takes the decorator default, DebugOnly, so it is not registered at all in a retail build (server_commands.statistic_commands:415). The extraction shows how each one is registered. It is not a report of a session in which someone typed them.

Level types, and where a skill's cap comes from

The game does not give every skill ten levels. Each skill declares a skill_level_type, and that selects the ladder it uses from a class-level mapping. The seven types are an enum in the skill class, with these values (statistics.skill:76).

Level typeValueWhat it is for
MAJOR0The full adult skill ladder
MINOR1The short adult ladder
CHILD2Child skill ladder
TEEN3Teen skill ladder
VAMPIRE_LORE4Its own ladder, separate from MAJOR and MINOR
TODDLER5Toddler skill ladder
POTTY6A ladder of its own, used by one toddler skill

The cap itself is computed at tuning load: max_level is set to the length of that ladder and the maximum point total to its sum (statistics.skill:632, :762). The numbers in the ladders live in tuning data rather than in the Python, so this page prints the mechanism and not a per-type level count. Copying a level count off another site would put a number here that nothing in the game data backs.

Why a skill cheat can lower a Sim's progress

A skill holds raw points. The level in the panel is derived from them: the game walks the ladder subtracting each level's cost until the total goes negative, and the index it stops at is the level (statistics.skill:727).

Setting a level therefore writes the point total at the bottom of that level. A Sim most of the way through level 6 who is set to level 6 lands back at the start of it. Nothing is broken; the two numbers are just not the same number.

Direction matters too. Going down is a single write. Going up is stepped one level at a time, deliberately, so that each level's notification, buff and reward fires on the way (server_commands.statistic_commands:361). Setting a Sim from 2 to 10 is not the same event as setting them to 10 from nothing.

Skills also do not decay: the skill class answers can_decay with a flat no (statistics.skill:1236). Any mod or guide offering skill decay protection is protecting against something the game does not do.

Packs and skills

None of the 34 commands above declares a pack requirement, so every one of them registers in a base-game install. That is a statement about the commands, not about the skills they address.

Skill tuning from a pack you do not own is never loaded, so the resolver cannot match its name. A skill argument that comes back unmatched on one machine and resolves on another is a pack difference, not a typo. Commands that do declare a pack code sit in satisfaction points cheat sims 4, where the code is printed next to each one.

It works the other way round as well: a skill can be gated for display and still be settable. The skill class carries both a hidden flag and a separate picker-display pack list, and neither one is what stats.set_skill_level checks. What it checks is Skill.can_add (statistics.skill:711), which is three gates, not one: the skill's age set, the unlock-on-max state, and the Sim's prevent-skills-from-being-added flag. Any of the three refuses the add, and the command then does nothing.

What this page does not print

A table of skill display names against their internal IDs. The command registry behind this site records the command, its arguments, its group and the module and line that registers it. Skill tuning names are not in it, and EA's published cheat list documents general, money and career cheats without covering skill commands at all.

The lists printed elsewhere are not traced to a game file, and this site does not republish an unsourced list under a verification stamp. The substring resolver above is the substitute: it gets the names out of the copy of the game in front of you, including the packs you own and any added after this build was extracted. The table goes in here when it can be cited the way every command above is cited.

Also absent: the aspiration_type and objective values the aspiration commands accept, and an effect description for any command that ships without one.

Where skill cheats sit next to everything else

Job performance and skill level are separate surfaces in the game data, and the promotion commands live in the sims 4 career cheats. Anything gated behind an expansion is grouped in satisfaction points cheat sims 4.

If typing dotted command names is not how you want to work, sims ui cheats covers the mod route instead.

Common questions

What is the skill cheat in The Sims 4?

stats.set_skill_level, registered at server_commands.statistic_commands line 361 in build 1.126.73.1030. The description shipped with it reads: sets a named skill to a level. It takes a skill, a level and an optional Sim, and it is declared in the Cheat group, so nothing happens until testingcheats true has been entered in the current session.

How do I find a skill's internal name?

The skill argument is a TunableInstanceParam over the STATISTIC instance manager with no exact-match flag, so the game resolves it by substring against the loaded skill tuning names. Ask for a fragment that matches more than one skill and the resolver builds an error naming every match, which is how you read the real names off your own install rather than off a cheat list.

Does stats.set_all_skills_max work?

Not when a player types it. The game registers it, but in the Automation group, which is the channel the test harness drives rather than the console. stats.clear_skill is worse: it takes the decorator default, DebugOnly, which never reaches register() in a shipped build at all. Neither is a typo or a removed feature; the game registers both, just not into a group a player can reach.

Why did my skill progress drop after using the cheat?

Because a level and a skill total are two different numbers. The game stores raw points and converts them to the 0-to-max level the panel shows. Setting a level writes the points at the bottom of that level, so partial progress inside it is discarded. Setting the same level you already have is a no-op and changes nothing.

Do skill cheats turn off achievements?

On console, yes. EA states that any cheat code requiring testingcheats true disables achievements and trophies in the save currently being played, with build mode cheats as the exception, and that other saves are unaffected. Every command on this page sits behind testingcheats, so treat that save as achievement-free from then on.