To get started, see Winokur's modding tutorials, the intro and xml at http://www.mohawkgames.com/2016/02/03/modding-tutorials/. The file is perk.xml. The executives are in executive.xml.
b = bool. i = integer.
<zType> what you name the perk. you use this name in executives.xml
<Name> what it's called in-game.
<zIcon> color of the square. B for building.
<zCoherentImage> the picture that appears
<iAvailableRoll> probability that a perk is available as an engineer to be bought. the denominator is the sum of the iAvailableRolls.
how it works: first the game makes N copies of the perk and puts them into a big list. engineers in the pool are randomly chosen from this list one by one, with replacement. (if you want to see the code, see fillPerksArray in campaign.cs. note that "aiPerksArray" means "array of int Perks Array", not "AI Perks Array", since they're using Hungarian notation)
warning: don't make this number too high, or your game will freeze when you start a campaign. Numbers less than 10000 are good.
<iAvailableTurn> first round it's available on. so if you set this to 3, this will start appearing after the 3rd mission.
<iLevelRoll> the chance that something is available as a mission reward. also with replacement. (search for setLevelPerk in campaign.cs.)
<iLevelTime> how long you get the mission reward for. 0 for forever.
<iCost> cost in the engineer pool
<iClaims> how many claims you get
<iSabotages> how many random sabotages you get. I think this is per-upgrade.
<iScreenRow> 10, 20, 30, 40 if it appears in the 1, 2, 3, 4th row (like the Engineer upgrades), or -1 if not
<bAuction> if this is a perk auction that the Campaign creates. some things like Pirates are auctions, but aren't perk auctions; there's a difference. (i.e. there are already Pirate auctions in Skirmishes, so you'll see them in campaign. but the campaign doesn't add extra pirate auctions)
<bShowGame> whether something appears in the perk list below a person's name
<bAvailableUnique> whether a player can only have one copy of this. further copies will not show up in the Engineering Pool. (i.e. Farm Engineers can have multiple appearances, but Patents cannot)
<bOnFound> whether it happens on founding
<bOnUpgrade> whether it happens on every upgrade
<bOnLevel> combined onFound and onUpgrade
<OnHQLevel> which HQ level it happens at
<HQUnlock> if it unlocks an HQ type
<FreeBuilding> grants you any free buildings
<BuildingClassLevel> Building Engineer
<Patent> if it grants you a patent
<AlternatePowerResource> if you can use something as a substitute for power
<ResourceStockpile> shipments
<ResourceProductionModifier> don't know
<OrderCostModifier> cheaper patents and research go here
<OrderRateModifier> faster patents, hacks, and research go here
<SabotageCount> any sabotage items